X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/3d010466e6ca79630578179223ca6a12870826f4..ef8c83bdb996146ff038c1c818ade3447272eb28:/gnu/packages/python-web.scm diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 010bf3f04f..735f033883 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -8,13 +8,13 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2016, 2017 Julien Lepiller -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2014, 2017 Eric Bavier ;;; Copyright © 2014, 2015 Mark H Weaver ;;; Copyright © 2015 Cyril Roelandt -;;; Copyright © 2015, 2016, 2017 Leo Famulari +;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari ;;; Copyright © 2016 Hartmut Goebel -;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2015, 2017 Ben Woodcroft ;;; Copyright © 2015, 2016 Christopher Allan Webber ;;; Copyright © 2017 Adriano Peluso @@ -27,6 +27,9 @@ ;;; Copyright © 2018 Nicolas Goaziou ;;; Copyright © 2018 Mathieu Othacehe ;;; Copyright © 2018 Maxim Cournoyer +;;; Copyright © 2019 Vagrant Cascadian +;;; Copyright © 2019 Brendan Tildesley +;;; Copyright © 2019 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,10 +58,13 @@ #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages django) + #:use-module (gnu packages groff) + #:use-module (gnu packages libffi) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages sphinx) #:use-module (gnu packages tls) #:use-module (gnu packages time) #:use-module (gnu packages web) @@ -69,14 +75,14 @@ (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 @@ -102,6 +108,26 @@ Callback Hell. @end itemize") (license license:asl2.0))) +(define-public python-aiohttp-socks + (package + (name "python-aiohttp-socks") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "aiohttp_socks" version)) + (sha256 + (base32 + "0473702jk66xrgpm28wbdgpnak4v0dh2qmdjw7ky7hf3lwwqkggf")))) + (build-system python-build-system) + (propagated-inputs + `(("python-aiohttp" ,python-aiohttp))) + (home-page "https://github.com/romis2012/aiohttp-socks") + (synopsis "SOCKS proxy connector for aiohttp") + (description "This package provides a SOCKS proxy connector for +aiohttp. It supports SOCKS4(a) and SOCKS5.") + (license license:asl2.0))) + (define-public python-aiodns (package (name "python-aiodns") @@ -125,6 +151,31 @@ asynchronous DNS resolutions with a synchronous looking interface by using @url{https://github.com/saghul/pycares,pycares}.") (license license:expat))) +(define-public python-aiorpcx + (package + (name "python-aiorpcx") + (version "0.18.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "aiorpcX" version)) + (sha256 + (base32 + "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 + "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 +comes with a SOCKS proxy client.") + (license (list license:expat license:bsd-2)))) + (define-public python-falcon (package (name "python-falcon") @@ -252,6 +303,28 @@ other HTTP libraries.") (define-public python2-httplib2 (package-with-python2 python-httplib2)) +(define-public python-html2text + (package + (name "python-html2text") + (version "2018.1.9") + (source + (origin + (method url-fetch) + (uri (pypi-uri "html2text" version)) + (sha256 + (base32 + "1m6d7ciq30adc3d1n8g6r46072n7q8kdy039pqvnnmp763xi8xb2")))) + (build-system python-build-system) + (home-page "https://pypi.org/project/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 +Swartz.") + (license license:gpl3+))) + +(define-public python2-html2text + (package-with-python2 python-html2text)) + (define-public python-mechanicalsoup (package (name "python-mechanicalsoup") @@ -292,14 +365,14 @@ follow links and submit forms. It doesn’t do JavaScript.") (define-public python-sockjs-tornado (package (name "python-sockjs-tornado") - (version "1.0.5") + (version "1.0.6") (source (origin (method url-fetch) (uri (pypi-uri "sockjs-tornado" version)) (sha256 (base32 - "0zhq8wnnhkfbvdnsggqrc3pp97pqpilsf7fh6ymvnf52r0rwyjsc")))) + "15dgv6hw6c7h3m310alw1h6p5443lrm9pyqhcv2smc13fz1v04pc")))) (build-system python-build-system) (arguments `(;; There are no tests, and running the test phase requires missing @@ -553,7 +626,9 @@ for clients and servers.") (build-system python-build-system) (arguments ;; Python 3 support is in `python3-openid`, a separate package. - `(#:python ,python-2)) + `(#:python ,python-2 + ;; Tests aren't initialized correctly. + #:tests? #f)) (home-page "https://github.com/openid/python-openid") (synopsis "OpenID support for servers and consumers") (description "This library provides OpenID authentication for Python, both @@ -588,6 +663,28 @@ options.") (define-public python2-cssutils (package-with-python2 python-cssutils)) +(define-public python-css-parser + (package + (inherit python-cssutils) + (name "python-css-parser") + (version "1.0.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "css-parser" version ".tar.gz")) + (sha256 + (base32 + "0i4xfykiffxzr4f6y0m2ggqvx1rzam6pw6krlr5k6ldf29akbay7")))) + (home-page "https://github.com/ebook-utils/css-parser") + (synopsis "Fork of cssutils modified for parsing ebooks") + (description + "Css-parser is a fork of cssutils 1.0.2, updated and modified for parsing +ebooks, due to cssutils not receiving updates as of 1.0.2.") + (license license:lgpl3+))) + +(define-public python2-css-parser + (package-with-python2 python-css-parser)) + (define-public python-cssselect (package (name "python-cssselect") @@ -767,6 +864,7 @@ term.js Javascript terminal emulator library.") (propagated-inputs `(("python2-backport-ssl-match-hostname" ,python2-backport-ssl-match-hostname) + ("python2-futures" ,python2-futures) ,@(package-propagated-inputs terminado)))))) (define-public python-wsgi-intercept @@ -848,14 +946,14 @@ dispatching systems can be built.") (define-public python-zope-interface (package (name "python-zope-interface") - (version "4.1.3") + (version "4.6.0") (source (origin (method url-fetch) (uri (pypi-uri "zope.interface" version)) (sha256 (base32 - "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if")))) + "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v")))) (build-system python-build-system) (native-inputs `(("python-zope-event" ,python-zope-event))) @@ -929,9 +1027,7 @@ forms, HTTP servers, regular expressions, and more.") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.testrunner/zope.testrunner-" - version ".zip")) + (uri (pypi-uri "zope.testrunner" version ".zip")) (sha256 (base32 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1")))) @@ -968,10 +1064,7 @@ tests.") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/z" - "/zope.i18nmessageid/zope.i18nmessageid-" - version ".tar.gz")) + (uri (pypi-uri "zope.i18nmessageid" version)) (sha256 (base32 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml")))) @@ -992,8 +1085,7 @@ internationalized messages within program source text.") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.schema/zope.schema-" version ".tar.gz")) + (uri (pypi-uri "zope.schema" version)) (sha256 (base32 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank")))) @@ -1023,9 +1115,7 @@ defining data schemas.") (version "4.0.3") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.configuration/zope.configuration-" - version ".tar.gz")) + (uri (pypi-uri "zope.configuration" version)) (sha256 (base32 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n")))) @@ -1051,8 +1141,7 @@ Markup Language.") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.proxy/zope.proxy-" version ".tar.gz")) + (uri (pypi-uri "zope.proxy" version)) (sha256 (base32 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4")))) @@ -1080,8 +1169,7 @@ brokering, etc.) for which the proxy is responsible.") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.location/zope.location-" version ".tar.gz")) + (uri (pypi-uri "zope.location" version)) (sha256 (base32 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74")))) @@ -1107,8 +1195,7 @@ Zope3, which are are special objects that have a structural location.") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.security/zope.security-" version ".tar.gz")) + (uri (pypi-uri "zope.security" version)) (sha256 (base32 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy")))) @@ -1242,15 +1329,19 @@ WebSocket usage in Python programs.") (define-public python-requests (package (name "python-requests") - (version "2.13.0") + (version "2.22.0") (source (origin (method url-fetch) (uri (pypi-uri "requests" version)) (sha256 (base32 - "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp")))) - ;; TODO: unbundle urllib3 and chardet. + "1d5ybh11jr5sm7xp6mz8fyc7vrp4syifds91m7sj60xalal0gq0i")))) (build-system python-build-system) + (propagated-inputs + `(("python-certifi" ,python-certifi) + ("python-chardet" ,python-chardet) + ("python-idna" ,python-idna) + ("python-urllib3" ,python-urllib3))) (arguments ;; FIXME: Some tests require network access. '(#:tests? #f)) @@ -1261,6 +1352,22 @@ WebSocket usage in Python programs.") 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 @@ -1345,34 +1452,36 @@ with python-requests.") (define-public python-oauthlib (package (name "python-oauthlib") - (version "1.0.3") + (version "3.0.1") (source (origin (method url-fetch) (uri (pypi-uri "oauthlib" version)) (sha256 (base32 - "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg")))) + "163jg4a8f7c5ki655grrr47kgljy12wri3qly7ijf64sk1fjrqqc")))) (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv")))))) (native-inputs - `(("python-nose" ,python-nose) - ("python-mock" ,python-mock) - ("python-cryptography" ,python-cryptography) + `(("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-mock" ,python-mock))) + (propagated-inputs + `(("python-cryptography" ,python-cryptography) ("python-pyjwt" ,python-pyjwt) ("python-blinker" ,python-blinker))) - (home-page "https://github.com/idan/oauthlib") + (home-page "https://github.com/oauthlib/oauthlib") (synopsis "OAuth implementation for Python") (description "Oauthlib is a generic, spec-compliant, thorough implementation of the OAuth request-signing logic.") - (license license:bsd-3) - (properties `((python2-variant . ,(delay python2-oauthlib)))))) + (license license:bsd-3))) (define-public python2-oauthlib - (let ((base (package-with-python2 (strip-python2-variant python-oauthlib)))) - (package - (inherit base) - (native-inputs `(("python2-unittest2" ,python2-unittest2) - ,@(package-native-inputs base)))))) + (package-with-python2 python-oauthlib)) (define-public python-rauth (package @@ -1409,21 +1518,16 @@ authenticated session objects providing things like keep-alive.") (define-public python-urllib3 (package (name "python-urllib3") - (version "1.24.1") + (version "1.25.3") (source (origin (method url-fetch) (uri (pypi-uri "urllib3" version)) (sha256 (base32 - "08lwd9f3hqznyf32vnzwvp87pchx062nkbgyrf67rwlkgj0jk5fy")))) + "0cij8qcvvpj62g1q8n785qjkdymfh4b7vf45si4sw64l41rr3rfv")))) (build-system python-build-system) (arguments `(#:tests? #f)) - (native-inputs - `(;; some packages for tests - ("python-mock" ,python-mock) - ("python-pytest" ,python-pytest) - ("python-tornado" ,python-tornado))) (propagated-inputs `(;; These 5 inputs are used to build urrlib3[secure] ("python-certifi" ,python-certifi) @@ -1440,6 +1544,18 @@ can reuse the same socket connection for multiple requests, it can POST files, 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)) @@ -1455,6 +1571,19 @@ supports url redirection and retries, and also gzip and deflate decoding.") (base32 "0sispclx263lybbk19zp1n9yhg8xxx4jddypzgi24vpjaqnsbwlc")))) (build-system python-build-system) + (arguments + ;; FIXME: The 'pypi' release does not contain tests. + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-reference-to-groff + (lambda _ + (substitute* "awscli/help.py" + (("if not self._exists_on_path\\('groff'\\):") "") + (("raise ExecutableNotFoundError\\('groff'\\)") "") + (("cmdline = \\['groff'") + (string-append "cmdline = ['" (which "groff") "'"))) + #t))))) (propagated-inputs `(("python-colorama" ,python-colorama) ("python-botocore" ,python-botocore) @@ -1462,9 +1591,8 @@ supports url redirection and retries, and also gzip and deflate decoding.") ("python-docutils" ,python-docutils) ("python-pyyaml" ,python-pyyaml) ("python-rsa" ,python-rsa))) - (arguments - ;; FIXME: The 'pypi' release does not contain tests. - '(#:tests? #f)) + (inputs + `(("groff" ,groff))) (home-page "https://aws.amazon.com/cli/") (synopsis "Command line client for AWS") (description "AWS CLI provides a unified command line interface to the @@ -1531,34 +1659,18 @@ file.") (define-public python-webtest (package (name "python-webtest") - (version "2.0.30") + (version "2.0.33") (source (origin (method url-fetch) (uri (pypi-uri "WebTest" version)) (sha256 (base32 - "1mb7m4ndklv84mh0pdkhv73yrflcnra61yczj5g3bvwbqlygfsaw")))) + "1l3z0cwqslsf4rcrhi2gr8kdfh74wn2dw76376i4g9i38gz8wd21")))) (build-system python-build-system) (arguments - `(;; Unfortunately we have to disable tests! - ;; This release of WebTest is pinned to python-nose < 1.3, - ;; but older versions of python-nose are plagued with the following - ;; bug(s), which rears its ugly head during test execution: - ;; https://github.com/nose-devs/nose/issues/759 - ;; https://github.com/nose-devs/nose/pull/811 - #:tests? #f)) - ;; Commented out code is no good, but in this case, once tests - ;; are ready to be enabled again, we should put the following - ;; in place: - ;; (native-inputs - ;; `(("python-nose" ,python-nose) ; technially < 1.3, - ;; ; but see above comment - ;; ("python-coverage" ,python-coverage) - ;; ("python-mock" ,python-mock) - ;; ("python-pastedeploy" ,python-pastedeploy) - ;; ("python-wsgiproxy2" ,python-wsgiproxy2) - ;; ("python-pyquery" ,python-pyquery))) + ;; Tests require python-pyquery, which creates a circular dependency. + `(#:tests? #f)) (propagated-inputs `(("python-waitress" ,python-waitress) ("python-webob" ,python-webob) @@ -1577,13 +1689,13 @@ minimum of WSGI.") (define-public python-flask (package (name "python-flask") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) - (uri (pypi-uri "flask" version)) + (uri (pypi-uri "Flask" version)) (sha256 (base32 - "0j6f4a9rpfh25k1gp7azqhnni4mb4fgy50jammgjgddw1l3w0w92")))) + "1wxnhjlxwwjhjxmghykjhllpahv5pkdc5hln4ab6nab43s26sz5d")))) (build-system python-build-system) (arguments '(#:phases @@ -1696,13 +1808,13 @@ Python.") (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: @@ -1798,14 +1910,14 @@ concurrent HTTP client library for python using @code{gevent}.") (define-public python-requests-oauthlib (package (name "python-requests-oauthlib") - (version "0.6.2") + (version "1.2.0") (source (origin (method url-fetch) (uri (pypi-uri "requests-oauthlib" version)) (sha256 (base32 - "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn")))) + "0mrglgcvq7k48pf27s4gifdk0za8xmgpf55jy15yjj471qrk6rdx")))) (build-system python-build-system) (arguments `(#:phases @@ -1816,7 +1928,8 @@ concurrent HTTP client library for python using @code{gevent}.") (delete-file "tests/test_core.py") #t))))) (native-inputs - `(("python-requests-mock" ,python-requests-mock) + `(("python-pyjwt" ,python-pyjwt) + ("python-requests-mock" ,python-requests-mock) ("python-mock" ,python-mock))) (propagated-inputs `(("python-oauthlib" ,python-oauthlib) @@ -1869,15 +1982,15 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients." (version "0.11.6") (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")))) + "0pb16bzbkk99nh317xyfk8fxc2ngimsbz7lz9pxsw8c82n83d4dh")))) (build-system python-build-system) (arguments `(#:phases @@ -1961,21 +2074,21 @@ Betamax.") (define-public python-s3transfer (package (name "python-s3transfer") - (version "0.1.13") + (version "0.2.0") (source (origin (method url-fetch) (uri (pypi-uri "s3transfer" version)) (sha256 (base32 - "1harvyn1s8v54n1w5h7c0lg4bgjh68aylhg28s8n174q53h1ip4h")))) + "08fhj73b1ai52hrs2q3nggshq3pswn1gq8ch3m009cb2v2vmqggj")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - ;; 7 of the 'integration' tests require network access or login - ;; credentials. + ;; Some of the 'integration' tests require network access or + ;; login credentials. (invoke "nosetests" "--exclude=integration") #t))))) (native-inputs @@ -1983,7 +2096,8 @@ Betamax.") ("python-mock" ,python-mock) ("python-nose" ,python-nose))) (propagated-inputs - `(("python-botocore" ,python-botocore))) + `(("python-botocore" ,python-botocore) + ("python-urllib3" ,python-urllib3))) (synopsis "Amazon S3 Transfer Manager") (description "S3transfer is a Python library for managing Amazon S3 transfers.") @@ -2077,6 +2191,30 @@ pretty printer and a tree visitor.") "This package provides HTTP basic access authentication for Flask.") (license license:bsd-3))) +(define-public python-flask-htpasswd + (package + (name "python-flask-htpasswd") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flask-htpasswd" version)) + (sha256 + (base32 + "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") @@ -2415,6 +2553,14 @@ this it tries to be opinion-free and very extendable.") (base32 "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda _ + (substitute* "tests.py" + (("flask\\.ext\\.script") "flask_script")) + #t))))) (propagated-inputs `(("python-flask" ,python-flask) ("python-argcomplete" ,python-argcomplete) @@ -2698,14 +2844,14 @@ available in Django, but is a standalone package.") (define-public python-paste (package (name "python-paste") - (version "3.0.4") + (version "3.0.6") (source (origin (method url-fetch) (uri (pypi-uri "Paste" version)) (sha256 (base32 - "01w26w9jyfkh0mfydhfz3dwy3pj3fw7mzvj0lna3vs8hyx1hwl0n")) + "14lbi9asn5agsdf7r97prkjpz7amgmp529lbvfhf0nv881xczah6")) (patches (search-patches "python-paste-remove-timing-test.patch")) (modules '((guix build utils))) (snippet @@ -2934,3 +3080,171 @@ underlies Mozilla Persona.") "This is a Python library for interacting with the Firefox Accounts ecosystem.") (license license:mpl2.0))) + +(define-public python-hyperlink + (package + (name "python-hyperlink") + (version "19.0.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "hyperlink" version)) + (sha256 + (base32 + "0m2nhi0j8wmgfscf974wd5v1xfq8mah286hil6npy1ys0m3y7222")))) + (build-system python-build-system) + (propagated-inputs + `(("python-idna" ,python-idna))) + (home-page "https://github.com/python-hyper/hyperlink") + (synopsis "Python module to create immutable URLs according to spec") + (description "This package provides a Python module to create immutable, and +correct URLs for Python according to RFCs 3986 and 3987.") + (license license:expat))) + +(define-public python-treq + (package + (name "python-treq") + (version "18.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "treq" version)) + (sha256 + (base32 + "0j4zwq9p1c9piv1vc66nxcv9s6hdinf90jwkbsm91k14npv9zq4i")))) + (build-system python-build-system) + (propagated-inputs + `(("python-attrs" ,python-attrs) + ("python-idna" ,python-idna) + ("python-incremental" ,python-incremental) + ("python-requests" ,python-requests) + ("python-service-identity" ,python-service-identity) + ("python-twisted" ,python-twisted))) + (home-page "https://github.com/twisted/treq") + (synopsis "Requests-like API built on top of twisted.web's Agent") + (description "This package provides an HTTP library inspired by +@code{requests}} but written on top of Twisted's @code{Agents}. It offers a +high level API for making HTTP requests when using Twisted.") + (license license:expat))) + +(define-public python-autobahn + (package + (name "python-autobahn") + (version "19.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "autobahn" version)) + (sha256 + (base32 + "1mm7j24ls01c7jb1ad5p5cpyxvzgydiyf8b04ihykh2v8g98j0x7")))) + (build-system python-build-system) + (arguments + ;; The tests fail to run: + ;; https://github.com/crossbario/autobahn-python/issues/1117 + `(#:tests? #f)) + (propagated-inputs + `(("python-cffi" ,python-cffi) + ("python-twisted" ,python-twisted) + ("python-txaio" ,python-txaio))) + (home-page "https://crossbar.io/autobahn/") + (synopsis "Web Application Messaging Protocol implementation") + (description "This package provides an implementation of the @dfn{Web Application +Messaging Protocol} (WAMP). WAMP connects components in distributed +applications using Publish and Subscribe (PubSub) and routed Remote Procedure +Calls (rRPC). It is ideal for distributed, multi-client and server applications +such as IoT applications or multi-user database-driven business applications.") + (license license:expat))) + +(define-public python-ws4py + (package + (name "python-ws4py") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ws4py" version)) + (sha256 + (base32 + "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'python3.7-compatibility + (lambda _ + (substitute* '("ws4py/server/tulipserver.py" + "ws4py/async_websocket.py") + (("asyncio.async") + "asyncio.ensure_future")) + #t)) + ;; We don't have a package for cherrypy. + (add-after 'unpack 'remove-cherrypy-support + (lambda _ + (delete-file "ws4py/server/cherrypyserver.py") + #t))))) + (propagated-inputs + `(("python-gevent" ,python-gevent) + ("python-tornado" ,python-tornado))) + (home-page "https://github.com/Lawouach/WebSocket-for-Python") + (synopsis "WebSocket client and server library") + (description + "This package provides a WebSocket client and server library for +Python.") + (license license:bsd-3))) + +;; kaldi-gstreamer-server does not yet work with python-ws4py > 0.3.2 +(define-public python2-ws4py-for-kaldi-gstreamer-server + (package (inherit python-ws4py) + (name "python2-ws4py") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ws4py" version)) + (sha256 + (base32 + "12ys3dv98awhrxd570vla3hqgzq3avjhq4yafhghhq3a942y1928")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + ;; We don't have a package for cherrypy. + (add-after 'unpack 'remove-cherrypy-support + (lambda _ + (delete-file "ws4py/server/cherrypyserver.py") + #t))))) + (propagated-inputs + `(("python-gevent" ,python2-gevent) + ("python-tornado" ,python2-tornado))))) + +(define-public python-slugify + (package + (name "python-slugify") + (version "3.0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-slugify" version)) + (sha256 + (base32 + "0n6pfmsq899c54plpvzi46l7zrpa3zfpm8im6h32czjw6kxky5jp")) + (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)))