gnu: python2-terminado: Add missing input.
[jackhill/guix/guix.git] / gnu / packages / python-web.scm
CommitLineData
1b2f753d
LC
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
354d27e5 3;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
1b2f753d 4;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
98c6a025 5;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
1b2f753d
LC
6;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
7;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
d47b21c6 8;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
1b2f753d
LC
9;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
10;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
47956fa0 11;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
1b2f753d
LC
12;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
13;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
14;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
68460fbb 15;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
1b2f753d 16;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
c381d4bb 17;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
1b2f753d
LC
18;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
19;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
20;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
21;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
22;;; Copyright © 2016 David Craven <david@craven.ch>
23;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
589e3f4e 24;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
eaa8292e 25;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
c5964611 26;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
85ccc0c2 27;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
1ceca46b 28;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
bb840999 29;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
93d3360a 30;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
dcfa0acd 31;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
1b2f753d
LC
32;;;
33;;; This file is part of GNU Guix.
34;;;
35;;; GNU Guix is free software; you can redistribute it and/or modify it
36;;; under the terms of the GNU General Public License as published by
37;;; the Free Software Foundation; either version 3 of the License, or (at
38;;; your option) any later version.
39;;;
40;;; GNU Guix is distributed in the hope that it will be useful, but
41;;; WITHOUT ANY WARRANTY; without even the implied warranty of
42;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43;;; GNU General Public License for more details.
44;;;
45;;; You should have received a copy of the GNU General Public License
46;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
47
48(define-module (gnu packages python-web)
49 #:use-module (guix packages)
50 #:use-module (guix download)
7c8b1bf6 51 #:use-module (guix git-download)
1b2f753d 52 #:use-module (guix build-system python)
e3e74e40 53 #:use-module (guix utils)
1b2f753d 54 #:use-module (gnu packages)
ac257f12 55 #:use-module (gnu packages check)
1b2f753d 56 #:use-module (gnu packages compression)
eaa8292e 57 #:use-module (gnu packages curl)
a8714bf6 58 #:use-module (gnu packages databases)
1b2f753d 59 #:use-module (gnu packages django)
951c7093 60 #:use-module (gnu packages libffi)
1b2f753d
LC
61 #:use-module (gnu packages pkg-config)
62 #:use-module (gnu packages python)
cc6f4912 63 #:use-module (gnu packages python-crypto)
44d10b1f 64 #:use-module (gnu packages python-xyz)
eaa8292e 65 #:use-module (gnu packages tls)
33dc54b0 66 #:use-module (gnu packages time)
56a5ef4c 67 #:use-module (gnu packages web)
1b2f753d
LC
68 #:use-module (gnu packages xml)
69 #:use-module ((guix licenses) #:prefix license:)
70 #:use-module (srfi srfi-1))
71
321ba568
NG
72(define-public python-aiohttp
73 (package
74 (name "python-aiohttp")
62c2cef0 75 (version "3.4.4")
321ba568
NG
76 (source
77 (origin
78 (method url-fetch)
79 (uri (pypi-uri "aiohttp" version))
80 (sha256
81 (base32
62c2cef0 82 "1ykm6kdjkrg556j0zd7dx2l1rsrbh0d9g27ivr6dmaahz9pyrbsi"))))
321ba568
NG
83 (build-system python-build-system)
84 (arguments
62c2cef0 85 `(#:tests? #f)) ;missing pytest-timeout
321ba568
NG
86 (propagated-inputs
87 `(("python-aiodns" ,python-aiodns)
88 ("python-async-timeout" ,python-async-timeout)
89 ("python-attrs" ,python-attrs)
90 ("python-chardet" ,python-chardet)
91 ("python-idna-ssl" ,python-idna-ssl)
92 ("python-multidict" ,python-multidict)
93 ("python-yarl" ,python-yarl)))
94 (home-page "https://github.com/aio-libs/aiohttp/")
95 (synopsis "Async HTTP client/server framework (asyncio)")
96 (description "@code{aiohttp} is an asynchronous HTTP client/server
97framework.
98
99Its main features are:
100@itemize
101@item Supports both client and server side of HTTP protocol.
102@item Supports both client and server Web-Sockets out-of-the-box without the
103Callback Hell.
104@item Web-server has middlewares and pluggable routing.
105@end itemize")
106 (license license:asl2.0)))
107
20310a7e
VC
108(define-public python-aiohttp-socks
109 (package
110 (name "python-aiohttp-socks")
111 (version "0.2.2")
112 (source
113 (origin
114 (method url-fetch)
115 (uri (pypi-uri "aiohttp_socks" version))
116 (sha256
117 (base32
118 "0473702jk66xrgpm28wbdgpnak4v0dh2qmdjw7ky7hf3lwwqkggf"))))
119 (build-system python-build-system)
120 (propagated-inputs
121 `(("python-aiohttp" ,python-aiohttp)))
122 (home-page "https://github.com/romis2012/aiohttp-socks")
123 (synopsis "SOCKS proxy connector for aiohttp")
124 (description "This package provides a SOCKS proxy connector for
125aiohttp. It supports SOCKS4(a) and SOCKS5.")
126 (license license:asl2.0)))
127
f90f4c9c
NG
128(define-public python-aiodns
129 (package
130 (name "python-aiodns")
131 (version "1.1.1")
132 (source
133 (origin
134 (method url-fetch)
135 (uri (pypi-uri "aiodns" version))
136 (sha256
137 (base32
138 "1snr5paql8dgvc676n8xq460wypjsb1xj53cf3px1s4wczf7lryq"))))
139 (build-system python-build-system)
140 (inputs
141 `(("python-pycares" ,python-pycares)))
142 (arguments
143 `(#:tests? #f)) ;tests require internet access
144 (home-page "http://github.com/saghul/aiodns")
145 (synopsis "Simple DNS resolver for asyncio")
146 (description "@code{aiodns} provides a simple way for doing
147asynchronous DNS resolutions with a synchronous looking interface by
148using @url{https://github.com/saghul/pycares,pycares}.")
149 (license license:expat)))
150
93d3360a
VC
151(define-public python-aiorpcx
152 (package
153 (name "python-aiorpcx")
154 (version "0.10.2")
155 (source
156 (origin
157 (method url-fetch)
158 (uri (pypi-uri "aiorpcX" version))
159 (sha256
160 (base32
161 "1p88k15jh0d2a18pnnbfcamsqi2bxvmmhpizmdlxfdxf8vy5ggyj"))))
162 (build-system python-build-system)
163 (propagated-inputs
164 `(("python-attrs" ,python-attrs)))
165 (home-page "https://github.com/kyuupichan/aiorpcX")
166 (synopsis "Generic asyncio RPC implementation")
167 (description
168 "aiorpcX is a generic asyncio library implementation of RPC suitable for
169an application that is a client, server or both.
170
171The package includes a module with full coverage of JSON RPC versions 1.0 and
1722.0, JSON RPC protocol auto-detection, and arbitrary message framing. It also
173comes with a SOCKS proxy client.")
174 (license (list license:expat license:bsd-2))))
175
bb840999
MC
176(define-public python-falcon
177 (package
178 (name "python-falcon")
179 (version "1.4.1")
180 (source
181 (origin
182 (method url-fetch)
183 (uri (pypi-uri "falcon" version))
184 (sha256
185 (base32
186 "1i0vmqsk24z4biirqhpvas9h28wy7nmpy3jvnb6rz2imq04zd09r"))))
187 (build-system python-build-system)
188 (arguments
189 `(#:phases
190 (modify-phases %standard-phases
191 (replace 'check
192 (lambda _
193 (invoke "pytest"))))))
194 (propagated-inputs
195 `(("python-mimeparse" ,python-mimeparse)
196 ("python-six" ,python-six)))
197 (native-inputs
198 `(("python-cython" ,python-cython) ;for faster binaries
199 ("python-pytest" ,python-pytest)
200 ("python-pyyaml" ,python-pyyaml)
201 ("python-requests" ,python-requests)
202 ("python-testtools" ,python-testtools)
203 ("python-jsonschema" ,python-jsonschema)
204 ("python-msgpack" ,python-msgpack)))
205 (home-page "https://falconframework.org")
206 (synopsis
207 "Web framework for building APIs and application backends")
208 (description
209 "Falcon is a web API framework for building microservices, application
210backends and higher-level frameworks. Among its features are:
211@itemize
212@item Optimized and extensible code base
213@item Routing via URI templates and REST-inspired resource
214classes
215@item Access to headers and bodies through request and response
216classes
217@item Request processing via middleware components and hooks
218@item Idiomatic HTTP error responses
219@item Straightforward exception handling
220@item Unit testing support through WSGI helpers and mocks
221@item Compatible with both CPython and PyPy
222@item Cython support for better performance when used with CPython
223@end itemize")
224 (license license:asl2.0)))
225
226(define-public python2-falcon
227 (package-with-python2 python-falcon))
228
66a9f08b
MC
229(define-public python-falcon-cors
230 (package
231 (name "python-falcon-cors")
232 (version "1.1.7")
233 (source
234 (origin
235 (method url-fetch)
236 (uri (pypi-uri "falcon-cors" version))
237 (sha256
238 (base32
239 "12pym7hwsbd8b0c1azn95nas8gm3f1qpr6lpyx0958xm65ffr20p"))))
240 (build-system python-build-system)
241 (native-inputs
242 `(("python-falcon" ,python-falcon)))
243 (home-page
244 "https://github.com/lwcolton/falcon-cors")
245 (synopsis "Falcon @dfn{cross-origin resource sharing} (CORS) library")
246 (description "This middleware provides @dfn{cross-origin resource
247sharing} (CORS) support for Falcon. It allows applying a specially crafted
248CORS object to the incoming requests, enabling the ability to serve resources
249over a different origin than that of the web application.")
250 (license license:asl2.0)))
251
252(define-public python2-falcon-cors
253 (package-with-python2 python-falcon-cors))
254
589e3f4e
LC
255(define-public python-furl
256 (package
257 (name "python-furl")
258 (version "0.5.6")
259 (source
260 (origin
261 (method url-fetch)
262 (uri (pypi-uri "furl" version))
263 (sha256
264 (base32
265 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
266 (build-system python-build-system)
267 (propagated-inputs
268 `(("python-six" ,python-six)
269 ("python-orderedmultidict" ,python-orderedmultidict)))
270 (native-inputs
271 `(("python-pycodestyle" ,python-pycodestyle)))
272 (home-page "https://github.com/gruns/furl")
273 (synopsis "URL manipulation in Python")
274 (description "Furl provides an easy-to-use alternative to the
275@code{urllib} and @code{urlparse} modules for manipulating URLs.")
276 (license license:unlicense)))
277
278(define-public python2-furl
279 (package-with-python2 python-furl))
280
1b2f753d
LC
281(define-public python-httplib2
282 (package
283 (name "python-httplib2")
284 (version "0.9.2")
285 (source
286 (origin
287 (method url-fetch)
288 (uri (pypi-uri "httplib2" version))
289 (sha256
290 (base32
291 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
292 (build-system python-build-system)
293 (home-page "https://github.com/jcgregorio/httplib2")
294 (synopsis "Comprehensive HTTP client library")
295 (description
296 "A comprehensive HTTP client library supporting many features left out of
297other HTTP libraries.")
298 (license license:expat)))
299
300(define-public python2-httplib2
301 (package-with-python2 python-httplib2))
302
7a82ceb7
BT
303(define-public python-html2text
304 (package
305 (name "python-html2text")
306 (version "2018.1.9")
307 (source
308 (origin
309 (method url-fetch)
310 (uri (pypi-uri "html2text" version))
311 (sha256
312 (base32
313 "1m6d7ciq30adc3d1n8g6r46072n7q8kdy039pqvnnmp763xi8xb2"))))
314 (build-system python-build-system)
315 (home-page "https://pypi.org/project/html2text/")
316 (synopsis "Convert HTML into plain text")
317 (description "html2text takes HTML and converts it into plain ASCII text
318which is also valid markdown. html2text was originally written by Aaron
319Swartz.")
320 (license license:gpl3+)))
321
322(define-public python2-html2text
323 (package-with-python2 python-html2text))
324
56a5ef4c
TGR
325(define-public python-mechanicalsoup
326 (package
327 (name "python-mechanicalsoup")
328 (version "0.11.0")
329 (source
330 (origin
331 (method url-fetch)
332 (uri (pypi-uri "MechanicalSoup" version))
333 (sha256
334 (base32 "0k59wwk75q7nz6i6gynvzhagy02ql0bv7py3qqcwgjw7607yq4i7"))))
335 (build-system python-build-system)
336 (arguments
337 ;; TODO: Enable tests when python-flake8@3.5 hits master.
338 `(#:tests? #f))
339 (propagated-inputs
340 `(("python-beautifulsoup4" ,python-beautifulsoup4)
341 ("python-lxml" ,python-lxml)
342 ("python-requests" ,python-requests)
343 ("python-six" ,python-six)))
344 ;; (native-inputs
345 ;; ;; For tests.
346 ;; `(("python-pytest-flake8" ,python-pytest-flake8)
347 ;; ("python-pytest-httpbin" ,python-pytest-httpbin)
348 ;; ("python-pytest-mock" ,python-pytest-mock)
349 ;; ("python-pytest-runner" ,python-pytest-runner)
350 ;; ("python-requests-mock" ,python-requests-mock)))
351 (home-page "https://mechanicalsoup.readthedocs.io/")
352 (synopsis "Python library for automating website interaction")
353 (description
354 "MechanicalSoup is a Python library for automating interaction with
355websites. It automatically stores and sends cookies, follows redirects, and can
356follow links and submit forms. It doesn’t do JavaScript.")
357 (license license:expat)))
358
359(define-public python2-mechanicalsoup
360 (package-with-python2 python-mechanicalsoup))
361
1b2f753d
LC
362(define-public python-sockjs-tornado
363 (package
364 (name "python-sockjs-tornado")
c381d4bb 365 (version "1.0.6")
1b2f753d
LC
366 (source
367 (origin
368 (method url-fetch)
369 (uri (pypi-uri "sockjs-tornado" version))
370 (sha256
371 (base32
c381d4bb 372 "15dgv6hw6c7h3m310alw1h6p5443lrm9pyqhcv2smc13fz1v04pc"))))
1b2f753d
LC
373 (build-system python-build-system)
374 (arguments
375 `(;; There are no tests, and running the test phase requires missing
376 ;; dependencies
377 #:tests? #f))
378 (propagated-inputs
379 `(("python-tornado" ,python-tornado)))
9be5ecdf 380 (home-page "https://github.com/mrjoes/sockjs-tornado/")
1b2f753d 381 (synopsis
1f7fe26f 382 "SockJS Python server implementation on top of the Tornado framework")
1b2f753d 383 (description
1f7fe26f 384 "SockJS-tornado provides the server-side counterpart to a SockJS client
1b2f753d
LC
385library, through the Tornado framework.
386
1f7fe26f 387SockJS provides a low-latency, full-duplex, cross-domain communication channel
1b2f753d
LC
388between a web browser and web server.")
389 (license license:expat)))
390
391(define-public python2-sockjs-tornado
392 (package-with-python2 python-sockjs-tornado))
393
394(define-public python-flask-babel
395 (package
396 (name "python-flask-babel")
1a6fb8da 397 (version "0.11.2")
1b2f753d
LC
398 (source
399 (origin
400 (method url-fetch)
401 (uri (pypi-uri "Flask-Babel" version))
402 (sha256
403 (base32
1a6fb8da 404 "0ff9n165vhf1nhv6807ckhpp224jw7k7sd7jz5kfh3sbpl85gmy0"))))
1b2f753d
LC
405 (build-system python-build-system)
406 (propagated-inputs
407 `(("python-flask" ,python-flask)
408 ("python-babel" ,python-babel)
409 ("python-jinja2" ,python-jinja2)
410 ("python-pytz" ,python-pytz)))
411 (home-page "https://github.com/python-babel/flask-babel")
412 (synopsis "Add i18n/l10n support to Flask applications")
413 (description "This package implements internationalization and localization
414support for Flask. This is based on the Python babel module as well as pytz -
415both of which are installed automatically if you install this library.")
416 (license license:bsd-3)))
417
418(define-public python2-flask-babel
419 (package-with-python2 python-flask-babel))
420
421(define-public python-html5lib
422 (package
423 (name "python-html5lib")
4ef80b2f 424 (version "1.0.1")
1b2f753d
LC
425 (source
426 (origin
427 (method url-fetch)
428 (uri (pypi-uri "html5lib" version))
429 (sha256
430 (base32
4ef80b2f 431 "0dipzfrycv6j1jw82v9b7d8lzggx3x8xngx6l4xrqkxwvg7hvjv6"))))
1b2f753d
LC
432 (build-system python-build-system)
433 (propagated-inputs
434 `(("python-six" ,python-six)
435 ("python-webencodings" ,python-webencodings)))
436 (arguments
437 `(#:test-target "check"))
438 (home-page
439 "https://github.com/html5lib/html5lib-python")
440 (synopsis
441 "Python HTML parser based on the WHATWG HTML specifcation")
442 (description
443 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
444and written in Python.")
445 (license license:expat)))
446
447(define-public python2-html5lib
448 (package-with-python2 python-html5lib))
449
450;; Needed for python-bleach, a dependency of python-notebook
451(define-public python-html5lib-0.9
452 (package
453 (inherit python-html5lib)
454 (version "0.999")
455 (source
456 (origin
457 (method url-fetch)
458 (uri (pypi-uri "html5lib" version))
459 (sha256
460 (base32
461 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
462
463(define-public python2-html5lib-0.9
464 (package-with-python2 python-html5lib-0.9))
465
466(define-public python-html5-parser
467 (package
468 (name "python-html5-parser")
5e517e9b 469 (version "0.4.5")
1b2f753d
LC
470 (source (origin
471 (method url-fetch)
472 (uri (pypi-uri "html5-parser" version))
473 (sha256
474 (base32
5e517e9b 475 "01mx33sx4dhl4kj6wc48nj6jz7ry60rkhjv0s6k8h5xmjf5yy0x9"))))
1b2f753d
LC
476 (build-system python-build-system)
477 (native-inputs
478 `(("pkg-config" ,pkg-config)))
479 (inputs
480 `(("libxml2" ,libxml2)))
481 (propagated-inputs
482 `(("python-lxml" ,python-lxml)
483 ("python-beautifulsoup4" ,python-beautifulsoup4)))
484 (home-page "https://html5-parser.readthedocs.io")
485 (synopsis "Fast C-based HTML5 parsing for Python")
486 (description "This package provides a fast implementation of the HTML5
487parsing spec for Python. Parsing is done in C using a variant of the gumbo
488parser. The gumbo parse tree is then transformed into an lxml tree, also in
489C, yielding parse times that can be a thirtieth of the html5lib parse times.")
490 ;; src/as-python-tree.[c|h] are licensed GPL3. The other files
491 ;; indicate ASL2.0, including the LICENSE file for the whole project.
492 (license (list license:asl2.0 license:gpl3))))
493
494(define-public python2-html5-parser
495 (package-with-python2 python-html5-parser))
496
eaa8292e
MM
497(define-public python-pycurl
498 (package
499 (name "python-pycurl")
0d35a954 500 (version "7.43.0.2")
eaa8292e
MM
501 (source
502 (origin
503 (method url-fetch)
504 (uri (string-append "https://dl.bintray.com/pycurl/pycurl/pycurl-"
505 version ".tar.gz"))
506 (sha256
0d35a954 507 (base32 "1915kb04k1j4y6k1dx1sgnbddxrl9r1n4q928if2lkrdm73xy30g"))))
eaa8292e
MM
508 (build-system python-build-system)
509 (arguments
510 ;; The tests attempt to access external web servers, so we cannot run
511 ;; them. Furthermore, they are skipped altogether when using Python 2.
60667159
MB
512 '(#:tests? #f
513 #:phases (modify-phases %standard-phases
514 (add-before 'build 'configure-tls-backend
515 (lambda _
516 ;; XXX: PycURL fails to automatically determine which TLS
517 ;; backend to use when cURL is built with --disable-static.
518 ;; See setup.py and <https://github.com/pycurl/pycurl/pull/147>.
519 (setenv "PYCURL_SSL_LIBRARY" "gnutls")
520 #t)))))
eaa8292e
MM
521 (native-inputs
522 `(("python-nose" ,python-nose)
523 ("python-bottle" ,python-bottle)))
524 (inputs
525 `(("curl" ,curl)
526 ("gnutls" ,gnutls)))
527 (home-page "http://pycurl.io/")
528 (synopsis "Lightweight Python wrapper around libcurl")
529 (description "Pycurl is a lightweight wrapper around libcurl. It provides
530high-speed transfers via libcurl and frequently outperforms alternatives.")
531
532 ;; Per 'README.rst', this is dual-licensed: users can redistribute pycurl
533 ;; under the terms of LGPLv2.1+ or Expat.
534 (license (list license:lgpl2.1+ license:expat))))
535
536(define-public python2-pycurl
537 (package-with-python2 python-pycurl))
538
1b2f753d
LC
539(define-public python-webencodings
540 (package
541 (name "python-webencodings")
b0a2c9cb 542 (version "0.5.1")
1b2f753d
LC
543 (source (origin
544 (method url-fetch)
545 (uri (pypi-uri "webencodings" version))
546 (sha256
547 (base32
b0a2c9cb 548 "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk"))))
1b2f753d
LC
549 (build-system python-build-system)
550 (arguments
551 '(#:phases
552 (modify-phases %standard-phases
553 (replace 'check
554 (lambda _
12adfdf0
TGR
555 (invoke "py.test" "-v" "webencodings/tests.py")
556 #t)))))
1b2f753d
LC
557 (native-inputs
558 `(("python-pytest" ,python-pytest)))
559 (home-page "https://github.com/SimonSapin/python-webencodings")
560 (synopsis "Character encoding aliases for legacy web content")
561 (description
562 "In order to be compatible with legacy web content when interpreting
563something like @code{Content-Type: text/html; charset=latin1}, tools need
564to use a particular set of aliases for encoding labels as well as some
565overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
a40f732b 566the web are actually aliases for @code{windows-1252}, and a @code{UTF-8}
1b2f753d
LC
567or @code{UTF-16} BOM takes precedence over any other encoding declaration.
568The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
569defines all such details so that implementations do not have to
570reverse-engineer each other.
571
572This module implements the Encoding standard and has encoding labels and
573BOM detection, but the actual implementation for encoders and decoders
574is Python’s.")
575 (license license:bsd-3)))
576
577(define-public python2-webencodings
578 (package-with-python2 python-webencodings))
579
580(define-public python-openid
581 (package
582 (name "python-openid")
10275b74 583 (version "3.1.0")
1b2f753d
LC
584 (source
585 (origin
586 (method url-fetch)
587 (uri (pypi-uri "python3-openid" version))
588 (sha256
589 (base32
10275b74 590 "00l5hrjh19740w00b3fnsqldnla41wbr2rics09dl4kyd1fkd3b2"))))
1b2f753d
LC
591 (build-system python-build-system)
592 (arguments
593 `(#:phases
594 (modify-phases %standard-phases
595 (replace 'check
596 (lambda _
10275b74
EF
597 (invoke "coverage" "run" "-m"
598 "unittest" "openid.test.test_suite"))))))
1b2f753d
LC
599 (properties `((python2-variant . ,(delay python2-openid))))
600 (propagated-inputs
601 `(("python-defusedxml" ,python-defusedxml)))
602 (native-inputs
10275b74
EF
603 `(("python-coverage" ,python-coverage)
604 ("python-psycopg2" ,python-psycopg2)
1b2f753d
LC
605 ("python-django" ,python-django)))
606 (home-page "https://github.com/necaris/python3-openid")
607 (synopsis "OpenID support for servers and consumers")
608 (description "This library provides OpenID authentication for Python, both
609for clients and servers.")
610 (license license:asl2.0)))
611
612(define-public python2-openid
613 (package
614 (name "python2-openid")
615 (version "2.2.5")
616 (source
617 (origin
618 (method url-fetch)
619 (uri (pypi-uri "python-openid" version))
620 (sha256
621 (base32
622 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
623 (build-system python-build-system)
624 (arguments
625 ;; Python 3 support is in `python3-openid`, a separate package.
9597c550
JL
626 `(#:python ,python-2
627 ;; Tests aren't initialized correctly.
628 #:tests? #f))
1b2f753d
LC
629 (home-page "https://github.com/openid/python-openid")
630 (synopsis "OpenID support for servers and consumers")
631 (description "This library provides OpenID authentication for Python, both
632for clients and servers.")
633 (license license:asl2.0)))
634
635(define-public python-cssutils
636 (package
637 (name "python-cssutils")
3c5658c5 638 (version "1.0.2")
1b2f753d
LC
639 (source
640 (origin
641 (method url-fetch)
642 (uri (pypi-uri "cssutils" version))
643 (sha256
644 (base32
3c5658c5 645 "1bxchrbqzapwijap0yhlxdil1w9bmwvgx77aizlkhc2mcxjg1z52"))))
1b2f753d
LC
646 (build-system python-build-system)
647 (native-inputs
3c5658c5 648 `(("unzip" ,unzip))) ; for unpacking the source
1b2f753d 649 (arguments
3c5658c5 650 `(#:tests? #f)) ; tests require python-pbr < 1.7.0
1b2f753d
LC
651 (home-page "http://cthedot.de/cssutils/")
652 (synopsis
653 "CSS Cascading Style Sheets library for Python")
654 (description
655 "Cssutils is a Python package for parsing and building CSS
656Cascading Style Sheets. Currently it provides a DOM only and no rendering
657options.")
658 (license license:lgpl3+)))
659
660(define-public python2-cssutils
661 (package-with-python2 python-cssutils))
662
02eb70bd
BT
663(define-public python-css-parser
664 (package
665 (inherit python-cssutils)
666 (name "python-css-parser")
667 (version "1.0.4")
668 (source
669 (origin
670 (method url-fetch)
671 (uri (pypi-uri "css-parser" version ".tar.gz"))
672 (sha256
673 (base32
674 "0i4xfykiffxzr4f6y0m2ggqvx1rzam6pw6krlr5k6ldf29akbay7"))))
675 (home-page "https://github.com/ebook-utils/css-parser")
676 (synopsis "Fork of cssutils modified for parsing ebooks")
677 (description
678 "Css-parser is a fork of cssutils 1.0.2, updated and modified for parsing
679ebooks, due to cssutils not receiving updates as of 1.0.2.")
680 (license license:lgpl3+)))
681
682(define-public python2-css-parser
683 (package-with-python2 python-css-parser))
684
1b2f753d
LC
685(define-public python-cssselect
686 (package
687 (name "python-cssselect")
688 (version "0.9.2")
689 (source
690 (origin
691 (method url-fetch)
692 (uri (pypi-uri "cssselect" version))
693 (sha256
694 (base32
695 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
696 (build-system python-build-system)
697 (arguments
698 ;; tests fail with message
699 ;; AttributeError: 'module' object has no attribute 'tests'
700 `(#:tests? #f))
701 (home-page
702 "https://pythonhosted.org/cssselect/")
703 (synopsis
704 "CSS3 selector parser and translator to XPath 1.0")
705 (description
706 "Cssselect ia a Python module that parses CSS3 Selectors and translates
707them to XPath 1.0 expressions. Such expressions can be used in lxml or
708another XPath engine to find the matching elements in an XML or HTML document.")
709 (license license:bsd-3)))
710
711(define-public python2-cssselect
712 (package-with-python2 python-cssselect))
713
714(define-public python-openid-cla
715 (package
716 (name "python-openid-cla")
717 (version "1.2")
718 (source
719 (origin
720 (method url-fetch)
721 (uri (pypi-uri "python-openid-cla" version))
722 (sha256
723 (base32
724 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
725 (build-system python-build-system)
726 (arguments '(#:tests? #f)) ; No tests.
727 (home-page "https://github.com/puiterwijk/python-openid-cla/")
728 (synopsis "Implementation of the OpenID CLA extension for python-openid")
729 (description "@code{openid-cla} is an implementation of the OpenID
730contributor license agreement extension for python-openid.")
731 (license license:bsd-3)))
732
733(define-public python2-openid-cla
734 (package-with-python2 python-openid-cla))
735
736(define-public python-openid-teams
737 (package
738 (name "python-openid-teams")
739 (version "1.1")
740 (source
741 (origin
742 (method url-fetch)
743 (uri (pypi-uri "python-openid-teams" version))
744 (sha256
745 (base32
746 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
747 (build-system python-build-system)
748 (arguments '(#:tests? #f)) ; No tests.
749 (home-page "https://github.com/puiterwijk/python-openid-teams/")
750 (synopsis "Implementation of the OpenID teams extension for python-openid")
751 (description
752 "@code{openid-teams} is an implementation of the OpenID
753teams extension for python-openid.")
754 (license license:bsd-3)))
755
756(define-public python2-openid-teams
757 (package-with-python2 python-openid-teams))
758
759(define-public python-tornado
760 (package
761 (name "python-tornado")
3fcaf42a 762 (version "5.1.1")
1b2f753d
LC
763 (source
764 (origin
765 (method url-fetch)
766 (uri (pypi-uri "tornado" version))
767 (sha256
3fcaf42a
EF
768 (base32
769 "02clqk2116jbnq8lnaqmdw3p52nqrd9ib59r4xz2ll43fpcmhlaf"))))
1b2f753d
LC
770 (build-system python-build-system)
771 (arguments
772 '(;; FIXME: Two tests error out with:
773 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
774 ;; #:phases
775 ;; (modify-phases %standard-phases
776 ;; (replace 'check
777 ;; (lambda _
778 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
779 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
3fcaf42a 780 ;; (invoke "python" "-m" "tornado.test.runtests")
12adfdf0 781 ;; #t)))
1b2f753d
LC
782 #:tests? #f))
783 (native-inputs
784 `(("python-certifi" ,python-certifi)))
3fcaf42a 785 (home-page "https://www.tornadoweb.org/")
1b2f753d
LC
786 (synopsis "Python web framework and asynchronous networking library")
787 (description
788 "Tornado is a Python web framework and asynchronous networking library,
789originally developed at FriendFeed. By using non-blocking network I/O,
790Tornado can scale to tens of thousands of open connections, making it ideal
791for long polling, WebSockets, and other applications that require a long-lived
792connection to each user.")
793 (license license:asl2.0)
794 (properties `((python2-variant . ,(delay python2-tornado))))))
795
796(define-public python2-tornado
797 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
798 (package (inherit tornado)
799 (propagated-inputs
800 `(("python2-backport-ssl-match-hostname"
801 ,python2-backport-ssl-match-hostname)
3fcaf42a 802 ("python2-backports-abc" ,python2-backports-abc)
1b2f753d
LC
803 ("python2-singledispatch" ,python2-singledispatch)
804 ,@(package-propagated-inputs tornado))))))
805
806(define-public python-tornado-http-auth
807 (package
808 (name "python-tornado-http-auth")
809 (version "1.1.0")
810 (source
811 (origin
812 (method url-fetch)
813 (uri (pypi-uri "tornado-http-auth" version))
814 (sha256
815 (base32
816 "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
817 (build-system python-build-system)
818 (propagated-inputs
819 `(("python-tornado" ,python-tornado)))
820 (home-page
821 "https://github.com/gvalkov/tornado-http-auth")
822 (synopsis
823 "Digest and basic authentication module for Tornado")
824 (description
825 "Provides support for adding authentication to services using the Tornado
826web framework, either via the basic or digest authentication schemes.")
827 (license license:asl2.0)))
828
829(define-public python-terminado
830 (package
831 (name "python-terminado")
d47b21c6 832 (version "0.8.1")
1b2f753d
LC
833 (source
834 (origin
835 (method url-fetch)
836 (uri (pypi-uri "terminado" version))
837 (sha256
838 (base32
d47b21c6 839 "0yh69k6579g848rmjyllb5h75pkvgcy27r1l3yzgkf33wnnzkasm"))))
1b2f753d
LC
840 (build-system python-build-system)
841 (propagated-inputs
842 `(("python-tornado" ,python-tornado)
843 ("python-ptyprocess" ,python-ptyprocess)))
844 (native-inputs
845 `(("python-nose" ,python-nose)))
846 (arguments
847 `(#:phases
848 (modify-phases %standard-phases
849 (replace 'check
d47b21c6 850 (lambda _ (invoke "nosetests") #t)))))
1b2f753d
LC
851 (home-page "https://github.com/takluyver/terminado")
852 (synopsis "Terminals served to term.js using Tornado websockets")
853 (description "This package provides a Tornado websocket backend for the
854term.js Javascript terminal emulator library.")
855 (license license:bsd-2)
856 (properties `((python2-variant . ,(delay python2-terminado))))))
857
858(define-public python2-terminado
859 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
860 (package (inherit terminado)
861 (propagated-inputs
862 `(("python2-backport-ssl-match-hostname"
863 ,python2-backport-ssl-match-hostname)
94249db8 864 ("python2-futures" ,python2-futures)
1b2f753d
LC
865 ,@(package-propagated-inputs terminado))))))
866
589e3f4e
LC
867(define-public python-wsgi-intercept
868 (package
869 (name "python-wsgi-intercept")
870 (version "1.2.2")
871 (source (origin
872 (method url-fetch)
2b221866 873 (uri (pypi-uri "wsgi_intercept" version))
589e3f4e
LC
874 (sha256
875 (base32
876 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
877 (build-system python-build-system)
878 (propagated-inputs
879 `(("python-six" ,python-six)))
880 (native-inputs
881 `(("python-pytest" ,python-pytest)
882 ("python-httplib2" ,python-httplib2)
883 ("python-requests" ,python-requests)
884 ("python-urllib3" ,python-urllib3)))
885 (synopsis "Puts a WSGI application in place of a real URI for testing")
886 (description "Wsgi_intercept installs a WSGI application in place of a real
887URI for testing. Testing a WSGI application normally involves starting a
888server at a local host and port, then pointing your test code to that address.
889Instead, this library lets you intercept calls to any specific host/port
890combination and redirect them into a WSGI application importable by your test
891program. Thus, you can avoid spawning multiple processes or threads to test
892your Web app.")
893 (home-page "https://github.com/cdent/wsgi-intercept")
894 (license license:expat)))
895
1b2f753d
LC
896(define-public python-webob
897 (package
898 (name "python-webob")
899 (version "1.5.1")
900 (source
901 (origin
902 (method url-fetch)
903 (uri (pypi-uri "WebOb" version))
904 (sha256
905 (base32
906 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
907 (build-system python-build-system)
908 (native-inputs
909 `(("python-nose" ,python-nose)))
9be5ecdf 910 (home-page "https://webob.org/")
1b2f753d
LC
911 (synopsis "WSGI request and response object")
912 (description
913 "WebOb provides wrappers around the WSGI request environment, and an
914object to help create WSGI responses.")
915 (license license:expat)))
916
917(define-public python2-webob
918 (package-with-python2 python-webob))
919
920(define-public python-zope-event
921 (package
922 (name "python-zope-event")
923 (version "4.1.0")
924 (source
925 (origin
926 (method url-fetch)
da501c49 927 (uri (pypi-uri "zope.event" version))
1b2f753d
LC
928 (sha256
929 (base32
930 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
931 (build-system python-build-system)
9be5ecdf 932 (home-page "https://pypi.python.org/pypi/zope.event")
1b2f753d
LC
933 (synopsis "Event publishing system for Python")
934 (description "Zope.event provides an event publishing API, intended for
935use by applications which are unaware of any subscribers to their events. It
936is a simple event-dispatching system on which more sophisticated event
937dispatching systems can be built.")
938 (license license:zpl2.1)))
939
940(define-public python2-zope-event
941 (package-with-python2 python-zope-event))
942
943(define-public python-zope-interface
944 (package
945 (name "python-zope-interface")
8142eadd 946 (version "4.6.0")
1b2f753d
LC
947 (source
948 (origin
949 (method url-fetch)
ba93e239 950 (uri (pypi-uri "zope.interface" version))
1b2f753d
LC
951 (sha256
952 (base32
8142eadd 953 "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v"))))
1b2f753d
LC
954 (build-system python-build-system)
955 (native-inputs
956 `(("python-zope-event" ,python-zope-event)))
957 (home-page "https://github.com/zopefoundation/zope.interface")
958 (synopsis "Python implementation of the \"design by contract\"
959methodology")
960 (description "Zope.interface provides an implementation of \"object
961interfaces\" for Python. Interfaces are a mechanism for labeling objects as
962conforming to a given API or contract.")
963 (license license:zpl2.1)))
964
965(define-public python2-zope-interface
966 (package-with-python2 python-zope-interface))
967
968(define-public python-zope-exceptions
969 (package
970 (name "python-zope-exceptions")
971 (version "4.0.8")
972 (source
973 (origin
974 (method url-fetch)
3d010466 975 (uri (pypi-uri "zope.exceptions" version))
1b2f753d
LC
976 (sha256
977 (base32
978 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
979 (build-system python-build-system)
980 (arguments
981 '(#:tests? #f)) ; circular dependency with zope.testrunner
982 (propagated-inputs
983 `(("python-zope-interface" ,python-zope-interface)))
984 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
985 (synopsis "Zope exceptions")
986 (description "Zope.exceptions provides general-purpose exception types
987that have uses outside of the Zope framework.")
988 (license license:zpl2.1)))
989
990(define-public python2-zope-exceptions
991 (package-with-python2 python-zope-exceptions))
992
993(define-public python-zope-testing
994 (package
995 (name "python-zope-testing")
9d981019 996 (version "4.6.2")
1b2f753d
LC
997 (source
998 (origin
999 (method url-fetch)
f9a6457d 1000 (uri (pypi-uri "zope.testing" version))
1b2f753d
LC
1001 (sha256
1002 (base32
9d981019 1003 "0iiq54hjhkk2gpvzfjac70vyn4r0kw0ngvicshxbdwrkgf2gjq3g"))
1b2f753d
LC
1004 (modules '((guix build utils)))
1005 (snippet
1006 '(begin
1007 ;; Remove pre-compiled .pyc files backup files from source.
1008 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
1009 #t))))
1010 (build-system python-build-system)
9be5ecdf 1011 (home-page "https://pypi.python.org/pypi/zope.testing")
1b2f753d
LC
1012 (synopsis "Zope testing helpers")
1013 (description "Zope.testing provides a number of testing utilities for HTML
1014forms, HTTP servers, regular expressions, and more.")
1015 (license license:zpl2.1)))
1016
1017(define-public python2-zope-testing
1018 (package-with-python2 python-zope-testing))
1019
1020(define-public python-zope-testrunner
1021 (package
1022 (name "python-zope-testrunner")
1023 (version "4.4.9")
1024 (source
1025 (origin
1026 (method url-fetch)
d409c993 1027 (uri (pypi-uri "zope.testrunner" version ".zip"))
1b2f753d
LC
1028 (sha256
1029 (base32
1030 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
1031 (build-system python-build-system)
1032 (arguments
1033 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1034 (native-inputs
1035 `(("python-six" ,python-six)
1036 ;("python-zope-interface" ,python-zope-interface)
1037 ("python-zope-exceptions" ,python-zope-exceptions)
1038 ("python-zope-testing" ,python-zope-testing)
1039 ("unzip" ,unzip)))
1040 (propagated-inputs
1041 `(("python-zope-interface" ,python-zope-interface)))
9be5ecdf 1042 (home-page "https://pypi.python.org/pypi/zope.testrunner")
1b2f753d
LC
1043 (synopsis "Zope testrunner script")
1044 (description "Zope.testrunner provides a script for running Python
1045tests.")
1046 (license license:zpl2.1)))
1047
1048(define-public python2-zope-testrunner
1049 (let ((base (package-with-python2 python-zope-testrunner)))
1050 (package
1051 (inherit base)
1052 (native-inputs
1053 (append (package-native-inputs base)
1054 `(("python2-subunit" ,python2-subunit)
1055 ("python2-mimeparse" ,python2-mimeparse)))))))
1056
1057(define-public python-zope-i18nmessageid
1058 (package
1059 (name "python-zope-i18nmessageid")
1060 (version "4.0.3")
1061 (source
1062 (origin
1063 (method url-fetch)
8a84d796 1064 (uri (pypi-uri "zope.i18nmessageid" version))
1b2f753d
LC
1065 (sha256
1066 (base32
1067 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
1068 (build-system python-build-system)
9be5ecdf 1069 (home-page "https://pypi.python.org/pypi/zope.i18nmessageid")
1b2f753d
LC
1070 (synopsis "Message identifiers for internationalization")
1071 (description "Zope.i18nmessageid provides facilities for declaring
1072internationalized messages within program source text.")
1073 (license license:zpl2.1)))
1074
1075(define-public python2-zope-i18nmessageid
1076 (package-with-python2 python-zope-i18nmessageid))
1077
1078(define-public python-zope-schema
1079 (package
1080 (name "python-zope-schema")
1081 (version "4.4.2")
1082 (source
1083 (origin
1084 (method url-fetch)
ab9e1740 1085 (uri (pypi-uri "zope.schema" version))
1b2f753d
LC
1086 (sha256
1087 (base32
1088 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
1089 (build-system python-build-system)
1090 (arguments
1091 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
1092 (propagated-inputs
1093 `(("python-zope-event" ,python-zope-event)
c695fb76 1094 ("python-zope-exceptions" ,python-zope-exceptions)
1b2f753d
LC
1095 ("python-zope-interface" ,python-zope-interface)))
1096 (native-inputs
1097 `(("python-zope-testing" ,python-zope-testing)
1098 ("python-coverage" ,python-coverage)
1099 ("python-nose" ,python-nose)))
9be5ecdf 1100 (home-page "https://pypi.python.org/pypi/zope.schema")
1b2f753d
LC
1101 (synopsis "Zope data schemas")
1102 (description "Zope.scheme provides extensions to zope.interface for
1103defining data schemas.")
1104 (license license:zpl2.1)))
1105
1106(define-public python2-zope-schema
1107 (package-with-python2 python-zope-schema))
1108
1109(define-public python-zope-configuration
1110 (package
1111 (name "python-zope-configuration")
1112 (version "4.0.3")
1113 (source (origin
1114 (method url-fetch)
cdf14a67 1115 (uri (pypi-uri "zope.configuration" version))
1b2f753d
LC
1116 (sha256
1117 (base32
1118 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
1119 (build-system python-build-system)
1120 (arguments
1121 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1122 (propagated-inputs
1123 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1124 ("python-zope-schema" ,python-zope-schema)))
9be5ecdf 1125 (home-page "https://pypi.python.org/pypi/zope.configuration")
1b2f753d
LC
1126 (synopsis "Zope Configuration Markup Language")
1127 (description "Zope.configuration implements ZCML, the Zope Configuration
1128Markup Language.")
1129 (license license:zpl2.1)))
1130
1131(define-public python2-zope-configuration
1132 (package-with-python2 python-zope-configuration))
1133
1134(define-public python-zope-proxy
1135 (package
1136 (name "python-zope-proxy")
1137 (version "4.1.6")
1138 (source
1139 (origin
1140 (method url-fetch)
510cacc7 1141 (uri (pypi-uri "zope.proxy" version))
1b2f753d
LC
1142 (sha256
1143 (base32
1144 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
1145 (build-system python-build-system)
1146 (arguments
1147 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1148 (propagated-inputs
1149 `(("python-zope-interface" ,python-zope-interface)))
9be5ecdf 1150 (home-page "https://pypi.python.org/pypi/zope.proxy")
1b2f753d
LC
1151 (synopsis "Generic, transparent proxies")
1152 (description "Zope.proxy provides generic, transparent proxies for Python.
1153Proxies are special objects which serve as mostly-transparent wrappers around
1154another object, intervening in the apparent behavior of the wrapped object
1155only when necessary to apply the policy (e.g., access checking, location
1156brokering, etc.) for which the proxy is responsible.")
1157 (license license:zpl2.1)))
1158
1159(define-public python2-zope-proxy
1160 (package-with-python2 python-zope-proxy))
1161
1162(define-public python-zope-location
1163 (package
1164 (name "python-zope-location")
1165 (version "4.0.3")
1166 (source
1167 (origin
1168 (method url-fetch)
6e6bbc02 1169 (uri (pypi-uri "zope.location" version))
1b2f753d
LC
1170 (sha256
1171 (base32
1172 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
1173 (build-system python-build-system)
1174 (arguments
1175 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1176 (propagated-inputs
1177 `(("python-zope-proxy" ,python-zope-proxy)
1178 ("python-zope-schema" ,python-zope-schema)))
9be5ecdf 1179 (home-page "https://pypi.python.org/pypi/zope.location/")
1b2f753d
LC
1180 (synopsis "Zope location library")
1181 (description "Zope.location implements the concept of \"locations\" in
1182Zope3, which are are special objects that have a structural location.")
1183 (license license:zpl2.1)))
1184
1185(define-public python2-zope-location
1186 (package-with-python2 python-zope-location))
1187
1188(define-public python-zope-security
1189 (package
1190 (name "python-zope-security")
1191 (version "4.0.3")
1192 (source
1193 (origin
1194 (method url-fetch)
fc283a5e 1195 (uri (pypi-uri "zope.security" version))
1b2f753d
LC
1196 (sha256
1197 (base32
1198 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
1199 (build-system python-build-system)
1200 (arguments
1201 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
1202 (propagated-inputs
1203 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1204 ("python-zope-proxy" ,python-zope-proxy)
1205 ("python-zope-schema" ,python-zope-schema)))
1206 (native-inputs
1207 `(("python-six" ,python-six)
1208 ("python-zope-component" ,python-zope-component)
1209 ("python-zope-configuration" ,python-zope-configuration)
1210 ("python-zope-location" ,python-zope-location)
1211 ("python-zope-testrunner" ,python-zope-testrunner)
1212 ("python-zope-testing" ,python-zope-testing)))
9be5ecdf 1213 (home-page "https://pypi.python.org/pypi/zope.security")
1b2f753d
LC
1214 (synopsis "Zope security framework")
1215 (description "Zope.security provides a generic mechanism to implement
1216security policies on Python objects.")
1217 (license license:zpl2.1)))
1218
1219(define-public python2-zope-security
1220 (let ((zope-security (package-with-python2 python-zope-security)))
1221 (package (inherit zope-security)
1222 (propagated-inputs
1223 `(("python2-zope-testrunner" ,python2-zope-testrunner)
1224 ,@(alist-delete
1225 "python-zope-testrunner"
1226 (package-propagated-inputs zope-security)))))))
1227
1228(define-public python-zope-component
1229 (package
1230 (name "python-zope-component")
1231 (version "4.3.0")
1232 (source
1233 (origin
1234 (method url-fetch)
1235 (uri (pypi-uri "zope.component" version))
1236 (sha256
1237 (base32
1238 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
1239 (build-system python-build-system)
1240 (arguments
1241 ;; Skip tests due to circular dependency with python-zope-security.
1242 '(#:tests? #f))
1243 (native-inputs
1244 `(("python-zope-testing" ,python-zope-testing)))
1245 (propagated-inputs
1246 `(("python-zope-event" ,python-zope-event)
1247 ("python-zope-interface" ,python-zope-interface)
1248 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1249 ("python-zope-configuration" ,python-zope-configuration)))
1250 (home-page "https://github.com/zopefoundation/zope.component")
1251 (synopsis "Zope Component Architecture")
1252 (description "Zope.component represents the core of the Zope Component
1253Architecture. Together with the zope.interface package, it provides
1254facilities for defining, registering and looking up components.")
1255 (license license:zpl2.1)))
1256
1257(define-public python2-zope-component
1258 (package-with-python2 python-zope-component))
1259
1260(define-public python-ndg-httpsclient
1261 (package
1262 (name "python-ndg-httpsclient")
57d5d3da 1263 (version "0.5.1")
1b2f753d
LC
1264 (source (origin
1265 (method url-fetch)
1266 (uri (pypi-uri "ndg_httpsclient" version))
1267 (sha256
1268 (base32
57d5d3da 1269 "0412b7i1s4vj7lz9r72nmb28h9syd4q2x89bdirkkc3a6z8awbyp"))))
1b2f753d
LC
1270 (build-system python-build-system)
1271 (arguments
1272 '(;; The tests appear to require networking.
1273 #:tests? #f))
1274 (propagated-inputs
1275 `(("python-pyopenssl" ,python-pyopenssl)))
1276 (synopsis "HTTPS support for Python's httplib and urllib2")
1277 (description "This is a HTTPS client implementation for httplib and urllib2
eed0f1e8
TGR
1278based on PyOpenSSL. PyOpenSSL provides a more fully-featured SSL implementation
1279over the default provided with Python and, importantly, enables full
1280verification of the SSL peer.")
1b2f753d
LC
1281 (home-page "https://github.com/cedadev/ndg_httpsclient/")
1282 (license license:bsd-3)))
1283
1284;; python2-openssl requires special care, so package-with-python2 is
1285;; insufficient.
1286(define-public python2-ndg-httpsclient
1287 (package (inherit python-ndg-httpsclient)
1288 (name "python2-ndg-httpsclient")
e3e74e40
TGR
1289 (arguments
1290 (substitute-keyword-arguments (package-arguments python-ndg-httpsclient)
1291 ((#:python _) python-2)))
1b2f753d
LC
1292 (propagated-inputs
1293 `(("python2-pyopenssl" ,python2-pyopenssl)))))
1294
1295(define-public python-websocket-client
1296 (package
1297 (name "python-websocket-client")
354d27e5 1298 (version "0.54.0")
1b2f753d
LC
1299 (source
1300 (origin
1301 (method url-fetch)
1302 (uri (pypi-uri "websocket_client" version))
1303 (sha256
1304 (base32
354d27e5 1305 "0j88zmikaypf38lvpkf4aaxrjp9j07dmy5ghj7kli0fv3p4n45g5"))))
1b2f753d
LC
1306 (build-system python-build-system)
1307 (propagated-inputs
1308 `(("python-six" ,python-six)))
1309 (home-page "https://github.com/liris/websocket-client")
1310 (synopsis "WebSocket client for Python")
1311 (description "The Websocket-client module provides the low level APIs for
1312WebSocket usage in Python programs.")
354d27e5 1313 (properties `((python2-variant . ,(delay python2-websocket-client))))
1b2f753d
LC
1314 (license license:lgpl2.1+)))
1315
1316(define-public python2-websocket-client
354d27e5
EF
1317 (let ((base (package-with-python2
1318 (strip-python2-variant python-websocket-client))))
1319 (package
1320 (inherit base)
1321 (native-inputs
1322 `(("python2-backport-ssl-match-hostname"
1323 ,python2-backport-ssl-match-hostname)
1324 ,@(package-native-inputs base))))))
1b2f753d 1325
589e3f4e
LC
1326(define-public python-requests
1327 (package
1328 (name "python-requests")
b5c2e720 1329 (version "2.21.0")
589e3f4e
LC
1330 (source (origin
1331 (method url-fetch)
1332 (uri (pypi-uri "requests" version))
1333 (sha256
1334 (base32
b5c2e720 1335 "13jr0wkj9c2j8c0c8iaal9iivi0bpxghnsdn6lxcpnmc657q4ajh"))))
589e3f4e 1336 (build-system python-build-system)
85ef07c4
MB
1337 (propagated-inputs
1338 `(("python-certifi" ,python-certifi)
1339 ("python-chardet" ,python-chardet)
1340 ("python-idna" ,python-idna)
1341 ("python-urllib3" ,python-urllib3)))
589e3f4e
LC
1342 (arguments
1343 ;; FIXME: Some tests require network access.
1344 '(#:tests? #f))
1345 (home-page "http://python-requests.org/")
1346 (synopsis "Python HTTP library")
1347 (description
1348 "Requests is a Python HTTP client library. It aims to be easier to use
1349than Python’s urllib2 library.")
1350 (license license:asl2.0)))
1351
1352;; Some software requires an older version of Requests, notably Docker
1353;; Compose.
1354(define-public python-requests-2.7
1355 (package (inherit python-requests)
1356 (version "2.7.0")
1357 (source (origin
1358 (method url-fetch)
1359 (uri (pypi-uri "requests" version))
1360 (sha256
1361 (base32
1362 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
1363
1364(define-public python2-requests
1365 (package-with-python2 python-requests))
1366
1b2f753d
LC
1367(define-public python-requests-mock
1368 (package
1369 (name "python-requests-mock")
1370 (version "1.3.0")
1371 (source
1372 (origin
1373 (method url-fetch)
1374 (uri (pypi-uri "requests-mock" version))
1375 (sha256
1376 (base32
1377 "0jr997dvk6zbmhvbpcv3rajrgag69mcsm1ai3w3rgk2jdh6rg1mx"))))
1378 (build-system python-build-system)
1379 (propagated-inputs
1380 `(("python-requests" ,python-requests)
1381 ("python-six" ,python-six)))
1382 (native-inputs
1383 `(("python-pbr" ,python-pbr)
1384 ("python-discover" ,python-discover)
1385 ("python-docutils" ,python-docutils)
1386 ("python-fixtures" ,python-fixtures)
1387 ("python-mock" ,python-mock)
1388 ("python-sphinx" ,python-sphinx)
1389 ("python-testrepository" ,python-testrepository)
1390 ("python-testtools" ,python-testtools)))
1391 (home-page "https://requests-mock.readthedocs.org/")
1392 (synopsis "Mock out responses from the requests package")
1393 (description
1394 "This module provides a building block to stub out the HTTP requests
1395portions of your testing code.")
1396 (properties `((python2-variant . ,(delay python2-requests-mock))))
1397 (license license:asl2.0)))
1398
1399(define-public python2-requests-mock
1400 (package (inherit (package-with-python2
1401 (strip-python2-variant python-requests-mock)))
1402 (arguments
1403 `(#:python ,python-2
1404 ;; FIXME: 'subunit.run discover: error: no such option: --list'
1405 #:tests? #f))))
1406
1407(define-public python-requests-toolbelt
1408 (package
1409 (name "python-requests-toolbelt")
1410 (version "0.8.0")
1411 (source (origin
1412 (method url-fetch)
1413 (uri (pypi-uri "requests-toolbelt" version))
1414 (sha256
1415 (base32
1416 "1dc7l42i4080r8i4m9fj51jx367lqkai170vrv7wd93gdj9k39gn"))))
1417 (build-system python-build-system)
1418 (native-inputs
1419 `(("python-betamax" ,python-betamax)
1420 ("python-mock" ,python-mock)
1421 ("python-pytest" ,python-pytest)))
1422 (propagated-inputs
1423 `(("python-requests" ,python-requests)))
1424 (synopsis "Extensions to python-requests")
1425 (description "This is a toolbelt of useful classes and functions to be used
1426with python-requests.")
1427 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
1428 (license license:asl2.0)))
1429
1430(define-public python2-requests-toolbelt
1431 (package-with-python2 python-requests-toolbelt))
1432
589e3f4e
LC
1433(define-public python-oauthlib
1434 (package
1435 (name "python-oauthlib")
1436 (version "1.0.3")
1437 (source (origin
1438 (method url-fetch)
1439 (uri (pypi-uri "oauthlib" version))
1440 (sha256
1441 (base32
1442 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
1443 (build-system python-build-system)
1444 (native-inputs
1445 `(("python-nose" ,python-nose)
1446 ("python-mock" ,python-mock)
1447 ("python-cryptography" ,python-cryptography)
1448 ("python-pyjwt" ,python-pyjwt)
1449 ("python-blinker" ,python-blinker)))
1450 (home-page "https://github.com/idan/oauthlib")
1451 (synopsis "OAuth implementation for Python")
1452 (description
1453 "Oauthlib is a generic, spec-compliant, thorough implementation of the
1454OAuth request-signing logic.")
1455 (license license:bsd-3)
1456 (properties `((python2-variant . ,(delay python2-oauthlib))))))
1457
1458(define-public python2-oauthlib
1459 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
1460 (package
1461 (inherit base)
1462 (native-inputs `(("python2-unittest2" ,python2-unittest2)
1463 ,@(package-native-inputs base))))))
1464
1b2f753d
LC
1465(define-public python-rauth
1466 (package
1467 (name "python-rauth")
1468 (version "0.7.3")
1469 (source
1470 (origin
1471 (method url-fetch)
1472 (uri (pypi-uri "rauth" version))
1473 (sha256
1474 (base32
1475 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
1476 (build-system python-build-system)
1477 (arguments
1478 `(#:test-target "check"))
1479 (propagated-inputs
1480 `(("python-requests" ,python-requests)))
1481 (home-page "https://github.com/litl/rauth")
1482 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
1483 (description
1484 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
1485provides service wrappers for convenient connection initialization and
1486authenticated session objects providing things like keep-alive.")
1487 (license license:expat)
1488 (properties `((python2-variant . ,(delay python2-rauth))))))
1489
1490(define-public python2-rauth
1491 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
1492 (package
1493 (inherit base)
1494 (native-inputs `(("python2-unittest2" ,python2-unittest2)
1495 ,@(package-native-inputs base))))))
1496
1497(define-public python-urllib3
1498 (package
1499 (name "python-urllib3")
20c5e2f4 1500 (version "1.24.1")
1b2f753d
LC
1501 (source
1502 (origin
1503 (method url-fetch)
1504 (uri (pypi-uri "urllib3" version))
1505 (sha256
1506 (base32
20c5e2f4 1507 "08lwd9f3hqznyf32vnzwvp87pchx062nkbgyrf67rwlkgj0jk5fy"))))
1b2f753d
LC
1508 (build-system python-build-system)
1509 (arguments `(#:tests? #f))
1b2f753d
LC
1510 (propagated-inputs
1511 `(;; These 5 inputs are used to build urrlib3[secure]
1512 ("python-certifi" ,python-certifi)
20c5e2f4 1513 ("python-cryptography" ,python-cryptography)
1b2f753d
LC
1514 ("python-idna" ,python-idna)
1515 ("python-ipaddress" ,python-ipaddress)
20c5e2f4
EF
1516 ("python-pyopenssl" ,python-pyopenssl)
1517 ("python-pysocks" ,python-pysocks)))
1518 (home-page "https://urllib3.readthedocs.io/")
1b2f753d
LC
1519 (synopsis "HTTP library with thread-safe connection pooling")
1520 (description
1521 "Urllib3 supports features left out of urllib and urllib2 libraries. It
1522can reuse the same socket connection for multiple requests, it can POST files,
1523supports url redirection and retries, and also gzip and deflate decoding.")
1524 (license license:expat)))
1525
1526(define-public python2-urllib3
1527 (package-with-python2 python-urllib3))
1528
1529(define-public awscli
1530 (package
1531 (name "awscli")
331ebb7f 1532 (version "1.14.41")
1b2f753d
LC
1533 (source
1534 (origin
1535 (method url-fetch)
1536 (uri (pypi-uri name version))
1537 (sha256
1538 (base32
331ebb7f 1539 "0sispclx263lybbk19zp1n9yhg8xxx4jddypzgi24vpjaqnsbwlc"))))
1b2f753d
LC
1540 (build-system python-build-system)
1541 (propagated-inputs
1542 `(("python-colorama" ,python-colorama)
1543 ("python-botocore" ,python-botocore)
1544 ("python-s3transfer" ,python-s3transfer)
1545 ("python-docutils" ,python-docutils)
1546 ("python-pyyaml" ,python-pyyaml)
1547 ("python-rsa" ,python-rsa)))
1548 (arguments
1549 ;; FIXME: The 'pypi' release does not contain tests.
1550 '(#:tests? #f))
1551 (home-page "https://aws.amazon.com/cli/")
1552 (synopsis "Command line client for AWS")
1553 (description "AWS CLI provides a unified command line interface to the
1554Amazon Web Services (AWS) API.")
1555 (license license:asl2.0)))
1556
1557(define-public python-wsgiproxy2
1558 (package
1559 (name "python-wsgiproxy2")
38e1095d 1560 (version "0.4.5")
1b2f753d
LC
1561 (source
1562 (origin
1563 (method url-fetch)
e38a8012 1564 (uri (pypi-uri "WSGIProxy2" version ".tar.gz"))
1b2f753d
LC
1565 (sha256
1566 (base32
38e1095d 1567 "19d9dva282vfjs784i0zkxp078lxfz4h3f621z30ij9wbf5rba6a"))))
1b2f753d 1568 (build-system python-build-system)
1b2f753d 1569 (native-inputs
e38a8012 1570 `(("python-webtest" ,python-webtest)))
1b2f753d 1571 (propagated-inputs
e38a8012
TGR
1572 `(("python-requests" ,python-requests)
1573 ("python-six" ,python-six)
1574 ("python-urllib3" ,python-urllib3)
1b2f753d 1575 ("python-webob" ,python-webob)))
e38a8012 1576 (home-page "https://github.com/gawel/WSGIProxy2/")
1b2f753d
LC
1577 (synopsis "WSGI Proxy with various http client backends")
1578 (description "WSGI turns HTTP requests into WSGI function calls.
1579WSGIProxy turns WSGI function calls into HTTP requests.
1580It also includes code to sign requests and pass private data,
1581and to spawn subprocesses to handle requests.")
1582 (license license:expat)))
1583
1584(define-public python2-wsgiproxy2
1585 (package-with-python2 python-wsgiproxy2))
1586
1587(define-public python-pastedeploy
1588 (package
1589 (name "python-pastedeploy")
1590 (version "1.5.2")
1591 (source
1592 (origin
1593 (method url-fetch)
1594 (uri (pypi-uri "PasteDeploy" version))
1595 (sha256
1596 (base32
1597 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
1598 (build-system python-build-system)
1599 (native-inputs
1600 `(("python-nose" ,python-nose)))
1601 (home-page "http://pythonpaste.org/deploy/")
1602 (synopsis
1603 "Load, configure, and compose WSGI applications and servers")
1604 (description
1605 "This tool provides code to load WSGI applications and servers from URIs;
1606these URIs can refer to Python Eggs for INI-style configuration files. Paste
1607Script provides commands to serve applications based on this configuration
1608file.")
1609 (license license:expat)))
1610
1611(define-public python2-pastedeploy
1612 (package-with-python2 python-pastedeploy))
1613
1614(define-public python-webtest
1615 (package
1616 (name "python-webtest")
0596a7af 1617 (version "2.0.33")
1b2f753d
LC
1618 (source
1619 (origin
1620 (method url-fetch)
1621 (uri (pypi-uri "WebTest" version))
1622 (sha256
1623 (base32
0596a7af 1624 "1l3z0cwqslsf4rcrhi2gr8kdfh74wn2dw76376i4g9i38gz8wd21"))))
1b2f753d
LC
1625 (build-system python-build-system)
1626 (arguments
0596a7af
TGR
1627 ;; Tests require python-pyquery, which creates a circular dependency.
1628 `(#:tests? #f))
1b2f753d
LC
1629 (propagated-inputs
1630 `(("python-waitress" ,python-waitress)
1631 ("python-webob" ,python-webob)
1632 ("python-six" ,python-six)
1633 ("python-beautifulsoup4" ,python-beautifulsoup4)))
1634 (home-page "http://webtest.pythonpaste.org/")
1635 (synopsis "Helper to test WSGI applications")
1636 (description "Webtest allows you to test your Python web applications
1637without starting an HTTP server. It supports anything that supports the
1638minimum of WSGI.")
1639 (license license:expat)))
1640
1641(define-public python2-webtest
1642 (package-with-python2 python-webtest))
1643
1644(define-public python-flask
1645 (package
1646 (name "python-flask")
67eda45b 1647 (version "1.0.2")
1b2f753d
LC
1648 (source (origin
1649 (method url-fetch)
67eda45b 1650 (uri (pypi-uri "flask" version))
1b2f753d
LC
1651 (sha256
1652 (base32
67eda45b 1653 "0j6f4a9rpfh25k1gp7azqhnni4mb4fgy50jammgjgddw1l3w0w92"))))
1b2f753d 1654 (build-system python-build-system)
47403955
EF
1655 (arguments
1656 '(#:phases
1657 (modify-phases %standard-phases
1658 (replace 'check
1659 (lambda _
1660 (invoke "python" "-m" "pytest"))))))
1661 (native-inputs
1662 `(("python-pytest" ,python-pytest)))
1b2f753d
LC
1663 (propagated-inputs
1664 `(("python-itsdangerous" ,python-itsdangerous)
1665 ("python-jinja2" ,python-jinja2)
1666 ("python-click" ,python-click)
1667 ("python-werkzeug" ,python-werkzeug)))
67eda45b 1668 (home-page "https://www.palletsprojects.com/p/flask/")
1b2f753d
LC
1669 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
1670 (description "Flask is a micro web framework based on the Werkzeug toolkit
1671and Jinja2 template engine. It is called a micro framework because it does not
1672presume or force a developer to use a particular tool or library.")
1673 (license license:bsd-3)))
1674
1675(define-public python2-flask
1676 (package-with-python2 python-flask))
1677
1678(define-public python-flask-wtf
1679 (package
1680 (name "python-flask-wtf")
1681 (version "0.13.1")
1682 (source
1683 (origin
1684 (method url-fetch)
1685 (uri (pypi-uri "Flask-WTF" version))
1686 (sha256
1687 (base32
1688 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
1689 (build-system python-build-system)
1690 (arguments
1691 '(#:phases
1692 (modify-phases %standard-phases
1693 (add-before 'check 'drop-failing-test
1694 (lambda _
1695 ;; FIXME: This file tries resolving an external server, which
1696 ;; fails. Try to patch out the offending section instead of
1697 ;; deleting the whole thing.
1698 (delete-file "tests/test_recaptcha.py")
1699 #t)))))
1700 (propagated-inputs
1701 `(("python-flask-babel" ,python-flask-babel)
1702 ("python-babel" ,python-babel)
1703 ("python-wtforms" ,python-wtforms)))
1704 (native-inputs
1705 `(("python-nose" ,python-nose)))
1706 (home-page "https://github.com/lepture/flask-wtf")
1707 (synopsis "Simple integration of Flask and WTForms")
1708 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
1709upload, and reCAPTCHA.")
1710 (license license:bsd-3)))
1711
1712(define-public python2-flask-wtf
1713 (package-with-python2 python-flask-wtf))
1714
1715(define-public python-flask-multistatic
1716 (package
1717 (name "python-flask-multistatic")
1718 (version "1.0")
1719 (source
1720 (origin
1721 (method url-fetch)
1722 (uri (pypi-uri "flask-multistatic" version))
1723 (sha256
1724 (base32
1725 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
1726 (build-system python-build-system)
1727 (propagated-inputs
1728 `(("python-flask" ,python-flask)))
1729 (home-page "https://pagure.io/flask-multistatic")
1730 (synopsis "Flask plugin to allow overriding static files")
1731 (description "@code{flask-multistatic} is a flask plugin that adds support
1732for overriding static files.")
1733 (license license:gpl3+)))
1734
1735(define-public python2-flask-multistatic
1736 (package-with-python2 python-flask-multistatic))
1737
1738(define-public python-cookies
1739 (package
1740 (name "python-cookies")
1741 (version "2.2.1")
1742 (source (origin
1743 (method url-fetch)
1744 (uri (pypi-uri "cookies" version))
1745 (sha256
1746 (base32
1747 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
1748 (build-system python-build-system)
1749 (arguments
1750 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
1751 #:tests? #f))
1752 (native-inputs
1753 `(("python-pytest" ,python2-pytest)))
1754 (synopsis "HTTP cookie parser and renderer")
1755 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
1756Python.")
1757 (home-page "https://gitlab.com/sashahart/cookies")
1758 (license license:expat)))
1759
1760(define-public python2-cookies
1761 (package-with-python2 python-cookies))
1762
1763(define-public python-responses
1764 (package
1765 (name "python-responses")
1766 (version "0.5.1")
1767 (source (origin
1768 (method url-fetch)
1769 (uri (pypi-uri "responses" version))
1770 (sha256
1771 (base32
1772 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
1773 (build-system python-build-system)
1774 (arguments
1775 `(;; Test suite is not distributed:
1776 ;; https://github.com/getsentry/responses/issues/38
1777 #:tests? #f))
1778 (native-inputs
1779 `(("python-mock" ,python-mock)))
1780 (propagated-inputs
1781 `(("python-requests" ,python-requests)
1782 ("python-cookies" ,python-cookies)
1783 ("python-six" ,python-six)))
1784 (home-page "https://github.com/getsentry/responses")
1785 (synopsis "Utility for mocking out the `requests` Python library")
1786 (description "A utility library for mocking out the `requests` Python
1787library.")
1788 (license license:asl2.0)))
1789
1790(define-public python2-responses
1791 (package-with-python2 python-responses))
1792
d08b3258
RW
1793(define-public python-grequests
1794 (package
1795 (name "python-grequests")
1796 (version "0.3.0")
1797 (source
1798 (origin
1799 (method url-fetch)
1800 (uri (pypi-uri "grequests" version))
1801 (sha256
1802 (base32
1803 "1j9icncllbkv7x5719b20mx670c6q1jrdx1sakskkarvx3pc8h8g"))))
1804 (build-system python-build-system)
1805 (propagated-inputs
1806 `(("python-gevent" ,python-gevent)
1807 ("python-requests" ,python-requests)))
1808 (native-inputs
1809 `(("python-nose" ,python-nose)))
1810 (home-page "https://github.com/kennethreitz/grequests")
1811 (synopsis "Python library for asynchronous HTTP requests")
1812 (description "GRequests is a Python library that allows you to use
1813@code{Requests} with @code{Gevent} to make asynchronous HTTP Requests easily")
1814 (license license:bsd-2)))
1815
1b2f753d
LC
1816(define-public python-geventhttpclient
1817 (package
1818 (name "python-geventhttpclient")
1819 (version "1.3.1")
1820 (source (origin
1821 (method url-fetch)
1822 (uri (pypi-uri "geventhttpclient" version))
1823 (sha256
1824 (base32
1825 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
1826 (modules '((guix build utils)))
1827 (snippet
1828 '(begin
1829 ;; Delete pre-compiled files.
1830 (for-each delete-file (find-files "src/geventhttpclient"
1831 ".*\\.pyc"))
1832 #t))))
1833 (build-system python-build-system)
1834 (arguments
1835 '(#:phases
1836 (modify-phases %standard-phases
1837 (add-after 'unpack 'delete-network-tests
1838 (lambda _
1839 (delete-file "src/geventhttpclient/tests/test_client.py")
1840 #t))
1841 (delete 'check)
1842 (add-after 'install 'check
1843 (lambda* (#:key inputs outputs #:allow-other-keys)
1844 (add-installed-pythonpath inputs outputs)
0e02e819
MB
1845 (invoke "py.test" "src/geventhttpclient/tests" "-v"
1846 ;; Append the test modules to sys.path to avoid
1847 ;; namespace conflict which breaks SSL tests.
1848 "--import-mode=append")
12adfdf0 1849 #t)))))
1b2f753d
LC
1850 (native-inputs
1851 `(("python-pytest" ,python-pytest)))
1852 (propagated-inputs
1853 `(("python-certifi" ,python-certifi)
1854 ("python-gevent" ,python-gevent)
1855 ("python-six" ,python-six)))
1856 (home-page "https://github.com/gwik/geventhttpclient")
1857 (synopsis "HTTP client library for gevent")
1858 (description "@code{python-geventhttpclient} is a high performance,
1859concurrent HTTP client library for python using @code{gevent}.")
1860 (license license:expat)))
1861
1862(define-public python2-geventhttpclient
1863 (package-with-python2 python-geventhttpclient))
1864
1865(define-public python-requests-oauthlib
1866 (package
1867 (name "python-requests-oauthlib")
1868 (version "0.6.2")
1869 (source
1870 (origin
1871 (method url-fetch)
1872 (uri (pypi-uri "requests-oauthlib" version))
1873 (sha256
1874 (base32
1875 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
1876 (build-system python-build-system)
1877 (arguments
1878 `(#:phases
1879 (modify-phases %standard-phases
1880 ;; removes tests that require network access
1881 (add-before 'check 'pre-check
1882 (lambda _
1883 (delete-file "tests/test_core.py")
1884 #t)))))
1885 (native-inputs
1886 `(("python-requests-mock" ,python-requests-mock)
1887 ("python-mock" ,python-mock)))
1888 (propagated-inputs
1889 `(("python-oauthlib" ,python-oauthlib)
1890 ("python-requests" ,python-requests)))
1891 (home-page
1892 "https://github.com/requests/requests-oauthlib")
1893 (synopsis
1894 "OAuthlib authentication support for Requests")
1895 (description
1896 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
1897provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
1898 (license license:isc)))
1899
1900(define-public python2-requests-oauthlib
1901 (package-with-python2 python-requests-oauthlib))
1902
1903(define-public python-url
1904 (package
1905 (name "python-url")
1906 (version "0.2.0")
1907 (source (origin
1908 (method url-fetch)
1909 (uri (pypi-uri "url" version))
1910 (sha256
1911 (base32
1912 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
1913 (build-system python-build-system)
1914 (propagated-inputs
1915 `(("python-publicsuffix" ,python-publicsuffix)))
1916 (native-inputs
1917 `(("python-coverage" ,python-coverage)
1918 ("python-nose" ,python-nose)))
1919 (arguments
1920 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
1921 (home-page "https://github.com/seomoz/url-py")
1922 (synopsis "URL Parsing")
1923 (description "Library for parsing urls.")
1924 (license license:expat)
1925 (properties `((python2-variant . ,(delay python2-url))))))
1926
1927(define-public python2-url
1928 (let ((base (package-with-python2 (strip-python2-variant python-url))))
1929 (package (inherit base)
1930 (propagated-inputs
1931 `(("python2-publicsuffix" ,python2-publicsuffix))))))
1932
1933(define-public python-cachecontrol
1934 (package
1935 (name "python-cachecontrol")
1936 (version "0.11.6")
1937 (source
1938 (origin
1939 (method url-fetch)
1940 ;; Pypi does not have tests.
1941 (uri (string-append
1942 "https://github.com/ionrock/cachecontrol/archive/v"
1943 version ".tar.gz"))
1944 (file-name (string-append name "-" version ".tar.gz"))
1945 (sha256
1946 (base32
1947 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
1948 (build-system python-build-system)
1949 (arguments
1950 `(#:phases
1951 (modify-phases %standard-phases
1952 (replace 'check
1953 (lambda _
1954 ;; Drop test that requires internet access.
1955 (delete-file "tests/test_regressions.py")
1956 (setenv "PYTHONPATH"
1957 (string-append (getcwd) "/build/lib:"
1958 (getenv "PYTHONPATH")))
12adfdf0
TGR
1959 (invoke "py.test" "-vv")
1960 #t)))))
1b2f753d
LC
1961 (native-inputs
1962 `(("python-pytest" ,python-pytest)
1963 ("python-redis" ,python-redis)
1964 ("python-webtest" ,python-webtest)
1965 ("python-mock" ,python-mock)))
1966 (propagated-inputs
1967 `(("python-requests" ,python-requests)
1968 ("python-lockfile" ,python-lockfile)))
1969 (home-page "https://github.com/ionrock/cachecontrol")
1970 (synopsis "The httplib2 caching algorithms for use with requests")
1971 (description "CacheControl is a port of the caching algorithms in
1972@code{httplib2} for use with @code{requests} session objects.")
1973 (license license:asl2.0)))
1974
1975(define-public python2-cachecontrol
1976 (package-with-python2 python-cachecontrol))
1977
1978(define-public python-betamax
1979 (package
1980 (name "python-betamax")
98516883 1981 (version "0.8.1")
1b2f753d
LC
1982 (source
1983 (origin
1984 (method url-fetch)
1985 (uri (pypi-uri "betamax" version))
1986 (sha256
1987 (base32
98516883 1988 "1hki1c2vs7adq7zr56wi6i5bhrkia4s2ywpv2c98ibnczz709w2v"))))
1b2f753d
LC
1989 (build-system python-build-system)
1990 (arguments
1991 '(;; Many tests fail because they require networking.
1992 #:tests? #f))
1993 (propagated-inputs
1994 `(("python-requests" ,python-requests)))
1995 (home-page "https://github.com/sigmavirus24/betamax")
1996 (synopsis "Record HTTP interactions with python-requests")
1997 (description "Betamax will record your test suite's HTTP interactions and
1998replay them during future tests. It is designed to work with python-requests.")
1999 (license license:expat)))
2000
2001(define-public python2-betamax
2002 (package-with-python2 python-betamax))
2003
2004(define-public python-betamax-matchers
2005 (package
2006 (name "python-betamax-matchers")
2007 (version "0.4.0")
2008 (source
2009 (origin
2010 (method url-fetch)
2011 (uri (pypi-uri "betamax-matchers" version))
2012 (sha256
2013 (base32
2014 "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
2015 (build-system python-build-system)
2016 (propagated-inputs
2017 `(("python-betamax" ,python-betamax)
2018 ("python-requests-toolbelt" ,python-requests-toolbelt)))
2019 (home-page "https://github.com/sigmavirus24/betamax_matchers")
2020 (synopsis "VCR imitation for python-requests")
2021 (description "@code{betamax-matchers} provides a set of Matchers for
2022Betamax.")
2023 (license license:asl2.0)))
2024
2025(define-public python2-betamax-matchers
2026 (package-with-python2 python-betamax-matchers))
2027
2028(define-public python-s3transfer
2029 (package
2030 (name "python-s3transfer")
bda82eff 2031 (version "0.1.13")
1b2f753d
LC
2032 (source (origin
2033 (method url-fetch)
2034 (uri (pypi-uri "s3transfer" version))
2035 (sha256
2036 (base32
bda82eff 2037 "1harvyn1s8v54n1w5h7c0lg4bgjh68aylhg28s8n174q53h1ip4h"))))
1b2f753d
LC
2038 (build-system python-build-system)
2039 (arguments
2040 `(#:phases
2041 (modify-phases %standard-phases
2042 (replace 'check
2043 (lambda _
2044 ;; 7 of the 'integration' tests require network access or login
2045 ;; credentials.
12adfdf0
TGR
2046 (invoke "nosetests" "--exclude=integration")
2047 #t)))))
1b2f753d
LC
2048 (native-inputs
2049 `(("python-docutils" ,python-docutils)
2050 ("python-mock" ,python-mock)
2051 ("python-nose" ,python-nose)))
2052 (propagated-inputs
2053 `(("python-botocore" ,python-botocore)))
2054 (synopsis "Amazon S3 Transfer Manager")
2055 (description "S3transfer is a Python library for managing Amazon S3
2056transfers.")
2057 (home-page "https://github.com/boto/s3transfer")
2058 (license license:asl2.0)
2059 (properties `((python2-variant . ,(delay python2-s3transfer))))))
2060
2061(define-public python2-s3transfer
2062 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
2063 (package
2064 (inherit base)
2065 (native-inputs
2066 `(("python2-futures" ,python2-futures)
2067 ,@(package-native-inputs base))))))
2068
9c98d588
CB
2069(define-public python-slimit
2070 (package
2071 (name "python-slimit")
2072 (version "0.8.1")
2073 (source
2074 (origin
2075 (method url-fetch)
2076 (uri (pypi-uri "slimit" version ".zip"))
2077 (sha256
2078 (base32
2079 "02vj2x728rs1127q2nc27frrqra4fczivnb7gch6n5lzi7pxqczl"))))
2080 (build-system python-build-system)
2081 (native-inputs
2082 `(("unzip" ,unzip)))
2083 (propagated-inputs
2084 `(("python-ply" ,python-ply)))
2085 (home-page "https://slimit.readthedocs.io/")
2086 (synopsis "JavaScript minifier, parser and lexer written in Python")
2087 (description
2088 "SlimIt is a JavaScript minifier written in Python. It compiles
2089JavaScript into more compact code so that it downloads and runs faster.
2090SlimIt also provides a library that includes a JavaScript parser, lexer,
2091pretty printer and a tree visitor.")
2092 (license license:expat)))
2093
1b2f753d
LC
2094(define-public python-flask-restful
2095 (package
2096 (name "python-flask-restful")
4f8be6d9 2097 (version "0.3.7")
1b2f753d
LC
2098 (source
2099 (origin
2100 (method url-fetch)
2101 (uri (pypi-uri "Flask-RESTful" version))
2102 (sha256
4f8be6d9
EF
2103 (base32
2104 "1a9cbwkr6krryyzq4sd3f415nkkc6dyfls5i3pgyibs94g0hw97q"))))
1b2f753d
LC
2105 (build-system python-build-system)
2106 (propagated-inputs
2107 `(("python-aniso8601" ,python-aniso8601)
2108 ("python-flask" ,python-flask)
2109 ("python-pycrypto" ,python-pycrypto)
2110 ("python-pytz" ,python-pytz)))
2111 (native-inputs
2112 `(;; Optional dependency of Flask. Tests need it.
2113 ("python-blinker" ,python-blinker)
2114 ("python-mock" ,python-mock) ; For tests
2115 ("python-nose" ,python-nose) ; For tests
2116 ("python-sphinx" ,python-sphinx)))
2117 (home-page
2118 "https://www.github.com/flask-restful/flask-restful/")
2119 (synopsis
2120 "Flask module for creating REST APIs")
2121 (description
2122 "This package contains a Flask module for creating REST APIs.")
2123 (license license:bsd-3)))
2124
2125(define-public python-flask-basicauth
2126 (package
2127 (name "python-flask-basicauth")
2128 (version "0.2.0")
2129 (source
2130 (origin
2131 (method url-fetch)
2132 (uri (pypi-uri "Flask-BasicAuth" version))
2133 (sha256
2134 (base32
2135 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
2136 (build-system python-build-system)
2137 (propagated-inputs
2138 `(("python-flask" ,python-flask)))
2139 (home-page
2140 "https://github.com/jpvanhal/flask-basicauth")
2141 (synopsis
2142 "HTTP basic access authentication for Flask")
2143 (description
2144 "This package provides HTTP basic access authentication for Flask.")
2145 (license license:bsd-3)))
2146
2147(define-public python-flask-sqlalchemy
2148 (package
2149 (name "python-flask-sqlalchemy")
2150 (version "2.1")
2151 (source
2152 (origin
2153 (method url-fetch)
2154 (uri (pypi-uri "Flask-SQLAlchemy" version))
2155 (sha256
2156 (base32
2157 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
2158 (build-system python-build-system)
2159 (propagated-inputs
2160 `(("python-flask" ,python-flask)
2161 ("python-sqlalchemy" ,python-sqlalchemy)))
2162 (home-page
2163 "https://github.com/mitsuhiko/flask-sqlalchemy")
2164 (synopsis
2165 "Module adding SQLAlchemy support to your Flask application")
2166 (description
2167 "This package adds SQLAlchemy support to your Flask application.")
2168 (license license:bsd-3)))
2169
2170(define-public python-flask-restplus
2171 (package
2172 (name "python-flask-restplus")
2173 (version "0.9.2")
2174 (source
2175 (origin
2176 (method url-fetch)
2177 (uri (pypi-uri "flask-restplus" version))
2178 (sha256
2179 (base32
2180 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
2181 (build-system python-build-system)
2182 (arguments
2183 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
2184 ;; #:phases
2185 ;; (modify-phases %standard-phases
2186 ;; (replace 'check
2187 ;; (lambda _
12adfdf0
TGR
2188 ;; (invoke "nosetests")
2189 ;; #t)))))
1b2f753d
LC
2190 (propagated-inputs
2191 `(("python-aniso8601" ,python-aniso8601)
2192 ("python-flask" ,python-flask)
2193 ("python-jsonschema" ,python-jsonschema)
2194 ("python-pytz" ,python-pytz)
2195 ("python-six" ,python-six)))
2196 (native-inputs
2197 `(("python-tzlocal" ,python-tzlocal)
2198 ("python-blinker" ,python-blinker)
2199 ("python-nose" ,python-nose)
2200 ("python-rednose" ,python-rednose)))
2201 (home-page "https://github.com/noirbizarre/flask-restplus")
2202 (synopsis "Framework for documented API development with Flask")
2203 (description "This package provides a framework for API development with
2204the Flask web framework in Python. It is similar to package
2205@code{python-flask-restful} but supports the @code{python-swagger}
2206documentation builder.")
2207 (license license:expat)))
2208
2209(define-public python-flask-restful-swagger
2210 (package
2211 (name "python-flask-restful-swagger")
2212 (version "0.19")
2213 (source
2214 (origin
2215 (method url-fetch)
2216 (uri (pypi-uri "flask-restful-swagger" version))
2217 (sha256
2218 (base32
2219 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
2220 (build-system python-build-system)
2221 (propagated-inputs
2222 `(("python-flask-restful" ,python-flask-restful)))
2223 (home-page "https://github.com/rantav/flask-restful-swagger")
2224 (synopsis "Extract Swagger specs from Flask-Restful projects")
2225 (description "This package lets you extract Swagger API documentation
2226specs from your Flask-Restful projects.")
2227 (license license:expat)))
2228
2229(define-public python2-flask-restful-swagger
2230 (package-with-python2 python-flask-restful-swagger))
2231
2232(define-public python-htmlmin
2233 (package
2234 (name "python-htmlmin")
05075433 2235 (version "0.1.12")
1b2f753d
LC
2236 (source
2237 (origin
2238 (method url-fetch)
2239 (uri (pypi-uri "htmlmin" version))
2240 (sha256
2241 (base32
05075433 2242 "0y51xhabw6x8jk8k93xl8vznshpz3jb6l28075r5sjip613fzhah"))))
1b2f753d 2243 (arguments
05075433 2244 `(#:tests? #f)) ; no tests
1b2f753d
LC
2245 (build-system python-build-system)
2246 (home-page "https://htmlmin.readthedocs.org/en/latest/")
2247 (synopsis "HTML minifier")
2248 (description "@code{htmlmin} is an HTML minifier that just works.
2249It comes with safe defaults and easily configurable options.")
2250 (license license:bsd-3)))
2251
2252(define-public python2-htmlmin
2253 (package-with-python2 python-htmlmin))
2254
2255(define-public python-flask-htmlmin
2256 (package
2257 (name "python-flask-htmlmin")
2258 (version "1.2")
2259 (source
2260 (origin
2261 (method url-fetch)
2262 (uri (pypi-uri "Flask-HTMLmin" version))
2263 (sha256
2264 (base32
2265 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
2266 (propagated-inputs
2267 `(("python-flask" ,python-flask)
2268 ("python-htmlmin" ,python-htmlmin)))
2269 (build-system python-build-system)
2270 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
2271 (synopsis "HTML response minifier for Flask")
2272 (description
2273 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
2274 (license license:bsd-3)))
2275
2276(define-public python2-flask-htmlmin
2277 (package-with-python2 python-flask-htmlmin))
2278
90b9c5ad
CB
2279(define-public python-jsmin
2280 (package
2281 (name "python-jsmin")
2282 (version "2.2.2")
2283 (source
2284 (origin
2285 (method url-fetch)
2286 (uri (pypi-uri "jsmin" version))
2287 (sha256
2288 (base32
2289 "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn"))))
2290 (build-system python-build-system)
2291 (home-page "https://github.com/tikitu/jsmin/")
2292 (synopsis "Python JavaScript minifier")
2293 (description
2294 "@code{jsmin} is a JavaScript minifier, usable from both Python code and
2295on the command line.")
2296 (license license:expat)))
2297
1b2f753d
LC
2298(define-public python-flask-login
2299 (package
2300 (name "python-flask-login")
d6ab1d0a 2301 (version "0.4.1")
1b2f753d
LC
2302 (source
2303 (origin
79374801
TGR
2304 (method git-fetch)
2305 (uri (git-reference
2306 (url "https://github.com/maxcountryman/flask-login.git")
2307 (commit version)))
2308 (file-name (git-file-name name version))
1b2f753d 2309 (sha256
d6ab1d0a 2310 (base32 "1rj0qwyxapxnp84fi4lhmvh3d91fdiwz7hibw77x3d5i72knqaa9"))))
1b2f753d 2311 (arguments
d6ab1d0a
TGR
2312 `(#:phases
2313 (modify-phases %standard-phases
2314 (add-before 'check 'avoid-yanc
2315 ;; Work around '.nosetests-real: error: no such option: --with-yanc'.
2316 (lambda _
2317 (setenv "NOCOLOR" "set")
2318 #t)))))
1b2f753d 2319 (build-system python-build-system)
d6ab1d0a
TGR
2320 (propagated-inputs
2321 `(("python-flask" ,python-flask)))
2322 (native-inputs
2323 ;; For tests.
2324 `(("python-blinker" ,python-blinker)
2325 ("python-mock" ,python-mock)
2326 ("python-nose" ,python-nose)
2327 ("python-pep8" ,python-pep8)
2328 ("python-pyflakes" ,python-pyflakes)
2329 ("python-semantic-version" ,python-semantic-version)
2330 ("python-werkzeug" ,python-werkzeug)))
1b2f753d
LC
2331 (home-page "https://github.com/maxcountryman/flask-login")
2332 (synopsis "User session management for Flask")
2333 (description
2334 "@code{Flask-Login} provides user session management for Flask. It
2335handles the common tasks of logging in, logging out, and remembering your
2336users' sessions over extended periods of time.")
2337 (license license:expat)))
2338
2339(define-public python2-flask-login
2340 (package-with-python2 python-flask-login))
2341
2342(define-public python-oauth2client
2343 (package
2344 (name "python-oauth2client")
2345 (version "4.0.0")
2346 (source
2347 (origin
2348 (method url-fetch)
2349 (uri (pypi-uri "oauth2client" version))
2350 (sha256
2351 (base32
2352 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
2353 (build-system python-build-system)
2354 (arguments
2355 `(#:tests? #f))
2356 (propagated-inputs
2357 `(("python-httplib2" ,python-httplib2)
2358 ("python-pyasn1" ,python-pyasn1)
2359 ("python-pyasn1-modules" ,python-pyasn1-modules)
2360 ("python-rsa" ,python-rsa)
2361 ("python-six" ,python-six)))
9be5ecdf 2362 (home-page "https://github.com/google/oauth2client/")
1b2f753d
LC
2363 (synopsis "OAuth 2.0 client library")
2364 (description "@code{python-oauth2client} provides an OAuth 2.0 client
2365library for Python")
2366 (license license:asl2.0)))
2367
1ceca46b
MO
2368(define-public python2-oauth2client
2369 (package-with-python2 python-oauth2client))
2370
1b2f753d
LC
2371(define-public python-flask-oidc
2372 (package
2373 (name "python-flask-oidc")
2374 (version "1.1.1")
2375 (source
2376 (origin
2377 (method url-fetch)
2378 (uri (pypi-uri "flask-oidc" version))
2379 (sha256
2380 (base32
2381 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
2382 (build-system python-build-system)
2383 (propagated-inputs
2384 `(("python-flask" ,python-flask)
2385 ("python-itsdangerous" ,python-itsdangerous)
2386 ("python-oauth2client" ,python-oauth2client)
2387 ("python-six" ,python-six)))
2388 (native-inputs
2389 `(("python-nose" ,python-nose)
2390 ("python-mock" ,python-mock)))
2391 (home-page "https://github.com/puiterwijk/flask-oidc")
2392 (synopsis "OpenID Connect extension for Flask")
2393 (description "@code{python-flask-oidc} provides an OpenID Connect extension
2394for Flask.")
2395 (license license:bsd-2)))
2396
2397(define-public python-webassets
2398 (package
2399 (name "python-webassets")
2400 (version "0.12.1")
2401 (source
2402 (origin
2403 (method url-fetch)
2404 (uri (pypi-uri "webassets" version))
2405 (sha256
2406 (base32
2407 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
2408 (build-system python-build-system)
2409 (native-inputs
2410 `(("python-jinja2" ,python-jinja2)
2411 ("python-mock" ,python-mock)
2412 ("python-nose" ,python-nose)
2413 ("python-pytest" ,python-pytest)))
2414 (home-page "https://github.com/miracle2k/webassets")
2415 (synopsis "Media asset management")
2416 (description "Merges, minifies and compresses Javascript and CSS files,
2417supporting a variety of different filters, including YUI, jsmin, jspacker or
2418CSS tidy. Also supports URL rewriting in CSS files.")
2419 (license license:bsd-2)))
2420
2421(define-public python-cssmin
2422 (package
2423 (name "python-cssmin")
2424 (version "0.2.0")
2425 (source
2426 (origin
2427 (method url-fetch)
2428 (uri (pypi-uri "cssmin" version))
2429 (sha256
2430 (base32
2431 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
2432 (build-system python-build-system)
2433 (home-page "https://github.com/zacharyvoase/cssmin")
2434 (synopsis "Python port of the YUI CSS Compressor")
2435 (description "Python port of the YUI CSS Compressor.")
2436 (license (list license:expat license:bsd-3))))
2437
2438(define-public python2-cssmin
2439 (package-with-python2 python-cssmin))
2440
2441(define-public python-elasticsearch
2442 (package
2443 (name "python-elasticsearch")
aabcb6e5 2444 (version "6.1.1")
1b2f753d
LC
2445 (source
2446 (origin
2447 (method url-fetch)
2448 (uri (pypi-uri "elasticsearch" version))
2449 (sha256
2450 (base32
aabcb6e5 2451 "1kjxl45yvvgfb5fmamx0kfsfg9pzphiqrwbkns3s28r1w7ya74cd"))))
1b2f753d
LC
2452 (build-system python-build-system)
2453 (native-inputs
2454 `(("python-mock" ,python-mock)
2455 ("python-nosexcover" ,python-nosexcover)
2456 ("python-pyaml" ,python-pyaml)
2457 ("python-requests" ,python-requests)))
2458 (propagated-inputs
2459 `(("urllib3" ,python-urllib3)))
2460 (arguments
2461 ;; tests require the test_elasticsearch module but it is not distributed.
2462 `(#:tests? #f))
2463 (home-page "https://github.com/elastic/elasticsearch-py")
2464 (synopsis "Low-level client for Elasticsearch")
2465 (description "Official low-level client for Elasticsearch. Its goal is to
2466provide common ground for all Elasticsearch-related code in Python; because of
2467this it tries to be opinion-free and very extendable.")
2468 (license license:expat)))
2469
2470(define-public python2-elasticsearch
2471 (package-with-python2 python-elasticsearch))
2472
2473(define-public python-flask-script
2474 (package
2475 (name "python-flask-script")
6a192184 2476 (version "2.0.6")
1b2f753d
LC
2477 (source
2478 (origin
2479 (method url-fetch)
2480 (uri (pypi-uri "Flask-Script" version))
2481 (sha256
2482 (base32
6a192184 2483 "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4"))))
1b2f753d
LC
2484 (build-system python-build-system)
2485 (propagated-inputs
2486 `(("python-flask" ,python-flask)
2487 ("python-argcomplete" ,python-argcomplete)
2488 ("python-werkzeug" ,python-werkzeug)))
2489 (native-inputs
2490 `(("python-pytest" ,python-pytest)))
2491 (home-page
9be5ecdf 2492 "https://github.com/smurfix/flask-script")
1b2f753d
LC
2493 (synopsis "Scripting support for Flask")
2494 (description "The Flask-Script extension provides support for writing
2495external scripts in Flask. This includes running a development server,
2496a customised Python shell, scripts to set up your database, cronjobs,
2497and other command-line tasks that belong outside the web application
2498itself.")
2499 (license license:bsd-3)))
2500
2501(define-public python2-flask-script
2502 (package-with-python2 python-flask-script))
2503
2504(define-public python-flask-migrate
2505 (package
2506 (name "python-flask-migrate")
2507 (version "2.0.3")
2508 (source
2509 (origin
2510 (method url-fetch)
2511 (uri (pypi-uri "Flask-Migrate" version))
2512 (sha256
2513 (base32
2514 "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
2515 (build-system python-build-system)
2516 (propagated-inputs
2517 `(("python-flask" ,python-flask)
2518 ("python-alembic" ,python-alembic)
2519 ("python-sqlalchemy" ,python-sqlalchemy)
2520 ("python-flask-script" ,python-flask-script)
2521 ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
9be5ecdf 2522 (home-page "https://github.com/miguelgrinberg/flask-migrate/")
1b2f753d
LC
2523 (synopsis "SQLAlchemy database migrations for Flask programs using
2524Alembic")
2525 (description "This package contains SQLAlchemy database migration tools
2526for Flask programs that are using @code{python-alembic}.")
2527 (license license:expat)))
2528
2529(define-public python2-flask-migrate
2530 (package-with-python2 python-flask-migrate))
2531
2532(define-public python-genshi
2533 (package
2534 (name "python-genshi")
7c8b1bf6 2535 (version "0.7.1")
1b2f753d
LC
2536 (source
2537 (origin
7c8b1bf6
TGR
2538 (method git-fetch)
2539 (uri (git-reference
2540 (url "https://github.com/edgewall/genshi.git")
2541 (commit version)))
2542 (file-name (git-file-name name version))
1b2f753d 2543 (sha256
7c8b1bf6 2544 (base32 "01fx8fnpay5w048ppyjivg2dgfpp5rybn07y3pfsgj2knram3nhl"))))
1b2f753d
LC
2545 (build-system python-build-system)
2546 (home-page "https://genshi.edgewall.org/")
2547 (synopsis "Toolkit for generation of output for the web")
2548 (description "Genshi is a Python library that provides an integrated set
2549of components for parsing, generating, and processing HTML, XML or other
2550textual content for output generation on the web.")
2551 (license license:bsd-3)))
2552
1b2f753d
LC
2553(define-public python2-genshi
2554 (package-with-python2 python-genshi))
2555
2556(define-public python-flask-principal
2557 (package
2558 (name "python-flask-principal")
2559 (version "0.4.0")
2560 (source
2561 (origin
2562 (method url-fetch)
2563 (uri (pypi-uri "Flask-Principal" version))
2564 (sha256
2565 (base32
2566 "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
2567 (build-system python-build-system)
2568 (propagated-inputs
2569 `(("python-blinker" ,python-blinker)))
2570 (native-inputs
2571 `(("python-flask" ,python-flask)
2572 ("python-nose" ,python-nose)))
2573 (home-page "http://packages.python.org/Flask-Principal/")
2574 (synopsis "Identity management for Flask")
2575 (description "@code{flask_principal} is a identity management library for
2576Flask. It supports managing both authentication and authorization data in a
2577thread-local variable.")
2578 (license license:expat)))
2579
2580(define-public python2-flask-principal
2581 (package-with-python2 python-flask-principal))
2582
2583(define-public python-flask-httpauth
2584 (package
2585 (name "python-flask-httpauth")
2586 (version "3.2.3")
2587 (source
2588 (origin
2589 (method url-fetch)
2590 (uri (pypi-uri "Flask-HTTPAuth" version))
2591 (sha256
2592 (base32
2593 "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
2594 (build-system python-build-system)
2595 (native-inputs
2596 `(("python-flask" ,python-flask)))
9be5ecdf 2597 (home-page "https://github.com/miguelgrinberg/flask-httpauth/")
1b2f753d
LC
2598 (synopsis "Basic and Digest HTTP authentication for Flask routes")
2599 (description "@code{flask_httpauth} provides Basic and Digest HTTP
2600authentication for Flask routes.")
2601 (license license:expat)))
2602
2603(define-public python2-flask-httpauth
2604 (package-with-python2 python-flask-httpauth))
2605
2606(define-public python-uritemplate
2607 (package
2608 (name "python-uritemplate")
2609 (version "3.0.0")
2610 (source
2611 (origin
2612 (method url-fetch)
2613 (uri (pypi-uri "uritemplate" version))
2614 (sha256
2615 (base32
2616 "0781gm9g34wa0asc19dx81ng0nqq07igzv3bbvdqmz13pv7469n0"))))
2617 (build-system python-build-system)
2618 (home-page "https://uritemplate.readthedocs.org")
2619 (synopsis "Library to deal with URI Templates")
2620 (description "@code{uritemplate} provides Python library to deal with URI
2621Templates.")
2622 (license license:bsd-2)))
2623
2624(define-public python2-uritemplate
2625 (package-with-python2 python-uritemplate))
2626
589e3f4e
LC
2627(define-public python-publicsuffix
2628 (package
2629 (name "python-publicsuffix")
2630 (version "1.1.0")
2631 (source (origin
2632 (method url-fetch)
2633 (uri (pypi-uri "publicsuffix" version))
2634 (sha256
2635 (base32
2636 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
2637 (build-system python-build-system)
2638 (arguments
2639 `(#:tests? #f)) ; tests use the internet
2640 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
2641 (synopsis "Get suffix for a domain name")
2642 (description "Get a public suffix for a domain name using the Public Suffix
2643List.")
2644 (license license:expat)))
2645
2646(define-public python2-publicsuffix
2647 (package-with-python2 python-publicsuffix))
2648
2649(define-public python-publicsuffix2
2650 (package
2651 (name "python-publicsuffix2")
2652 (version "2.20160818")
2653 (source
2654 (origin
2655 (method url-fetch)
2656 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
2657 (sha256
2658 (base32
2659 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
2660 (build-system python-build-system)
2661 (arguments
2662 '(#:tests? #f)) ; The test suite requires network access.
2663 (home-page "https://github.com/pombredanne/python-publicsuffix2")
2664 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
2665 (description "Get a public suffix for a domain name using the Public Suffix
2666List. Forked from and using the same API as the publicsuffix package.")
2667 (license (list license:expat license:mpl2.0))))
2668
2669(define-public python2-publicsuffix2
2670 (package-with-python2 python-publicsuffix2))
98c6a025
RW
2671
2672(define-public python-werkzeug
2673 (package
2674 (name "python-werkzeug")
c5e110ce 2675 (version "0.14.1")
98c6a025
RW
2676 (source
2677 (origin
2678 (method url-fetch)
c5e110ce 2679 (uri (pypi-uri "werkzeug" version))
98c6a025
RW
2680 (sha256
2681 (base32
c5e110ce 2682 "0z2m4snn1vc9518r2vzgdj1nc90kcgi60wijvd29yvcp85ypmzf3"))))
98c6a025 2683 (build-system python-build-system)
c5e110ce
EF
2684 (arguments
2685 '(#:phases
2686 (modify-phases %standard-phases
2687 (delete 'check)
2688 (add-after 'install 'check
2689 (lambda* (#:key inputs outputs #:allow-other-keys)
2690 (add-installed-pythonpath inputs outputs)
2691 (invoke "python" "-m" "pytest"))))))
2692 (propagated-inputs
2693 `(("python-requests" ,python-requests)))
98c6a025
RW
2694 (native-inputs
2695 `(("python-pytest" ,python-pytest)))
c5e110ce 2696 (home-page "https://www.palletsprojects.org/p/werkzeug/")
98c6a025
RW
2697 (synopsis "Utilities for WSGI applications")
2698 (description "One of the most advanced WSGI utility modules. It includes a
2699powerful debugger, full-featured request and response objects, HTTP utilities to
2700handle entity tags, cache control headers, HTTP dates, cookie handling, file
2701uploads, a powerful URL routing system and a bunch of community-contributed
2702addon modules.")
2703 (license license:x11)))
2704
2705(define-public python2-werkzeug
2706 (package-with-python2 python-werkzeug))
2707
2708(define-public python-bottle
2709 (package
2710 (name "python-bottle")
2711 (version "0.12.13")
2712 (source
2713 (origin
2714 (method url-fetch)
2715 (uri (pypi-uri "bottle" version))
2716 (sha256
2717 (base32
2718 "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
2719 (build-system python-build-system)
2720 (home-page "http://bottlepy.org/")
2721 (synopsis "WSGI framework for small web-applications.")
2722 (description "@code{python-bottle} is a WSGI framework for small web-applications.")
2723 (license license:expat)))
2724
2725(define-public python2-bottle
2726 (package-with-python2 python-bottle))
2727
2728(define-public python-wtforms
2729 (package
2730 (name "python-wtforms")
2731 (version "2.1")
2732 (source
2733 (origin
2734 (method url-fetch)
2735 (uri (pypi-uri "WTForms" version ".zip"))
2736 (sha256
2737 (base32
2738 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
2739 (build-system python-build-system)
2740 (arguments
2741 '(#:phases
2742 (modify-phases %standard-phases
2743 (add-after 'unpack 'remove-django-test
2744 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
2745 (lambda _
2746 (substitute*
2747 "tests/runtests.py"
2748 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
2749 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
2750 #t)))))
2751 (native-inputs
2752 `(("unzip" ,unzip)))
2753 (home-page "http://wtforms.simplecodes.com/")
2754 (synopsis
2755 "Form validation and rendering library for Python web development")
2756 (description
2757 "WTForms is a flexible forms validation and rendering library
2758for Python web development. It is very similar to the web form API
2759available in Django, but is a standalone package.")
2760 (license license:bsd-3)))
2761
2762(define-public python2-wtforms
2763 (package-with-python2 python-wtforms))
2764
2765(define-public python-paste
2766 (package
2767 (name "python-paste")
ce50403f 2768 (version "3.0.6")
98c6a025
RW
2769 (source
2770 (origin
2771 (method url-fetch)
2772 (uri (pypi-uri "Paste" version))
2773 (sha256
2774 (base32
ce50403f 2775 "14lbi9asn5agsdf7r97prkjpz7amgmp529lbvfhf0nv881xczah6"))
95176544
EF
2776 (patches (search-patches "python-paste-remove-timing-test.patch"))
2777 (modules '((guix build utils)))
2778 (snippet
2779 '(begin
2780 ;; This test calls out to the internet.
2781 (delete-file "tests/test_proxy.py") #t))))
98c6a025
RW
2782 (build-system python-build-system)
2783 (native-inputs
95176544
EF
2784 `(("python-pytest" ,python-pytest)
2785 ("python-pytest-runner" ,python-pytest-runner)
2786 ("python-nose" ,python-nose)))
98c6a025
RW
2787 (propagated-inputs
2788 `(("python-six" ,python-six)))
2789 (home-page "http://pythonpaste.org")
2790 (synopsis
2791 "Python web development tools, focusing on WSGI")
2792 (description
2793 "Paste provides a variety of web development tools and middleware which
2794can be nested together to build web applications. Paste's design closely
2795follows ideas flowing from WSGI (Web Standard Gateway Interface).")
2796 (license license:expat)))
2797
2798(define-public python2-paste
2799 (package-with-python2 python-paste))
2800
2801(define-public python-pastescript
2802 (package
2803 (name "python-pastescript")
2804 (version "2.0.2")
2805 (source
2806 (origin
2807 (method url-fetch)
2808 (uri (pypi-uri "PasteScript" version))
2809 (sha256
2810 (base32
2811 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
2812 (build-system python-build-system)
2813 (native-inputs
2814 `(("python-nose" ,python-nose)))
2815 (propagated-inputs
2816 `(("python-paste" ,python-paste)
2817 ("python-pastedeploy" ,python-pastedeploy)))
2818 (home-page "http://pythonpaste.org/script/")
2819 (arguments
2820 '(;; Unfortunately, this requires the latest unittest2,
2821 ;; but that requires traceback2 which requires linecache2 which requires
2822 ;; unittest2. So we're skipping tests for now.
2823 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
2824 ;; so in theory we could get around this situation somehow.)
2825 #:tests? #f))
2826 (synopsis
2827 "Pluggable command line tool for serving web applications and more")
2828 (description
2829 "PasteScript is a plugin-friendly command line tool which provides a
2830variety of features, from launching web applications to bootstrapping project
2831layouts.")
2832 (license license:expat)))
2833
2834(define-public python2-pastescript
2835 (package-with-python2 python-pastescript))
c5964611
2836
2837(define-public python2-urlgrabber
2838 (package
2839 (name "python2-urlgrabber")
2840 (version "3.10.2")
2841 (source
2842 (origin
2843 (method url-fetch)
2844 (uri (pypi-uri "urlgrabber" version))
2845 (sha256
2846 (base32 "0w1h7hlsq406bxfy2pn4i9bd003bwl0q9b7p03z3g6yl0d21ddq5"))))
2847 (build-system python-build-system)
2848 (arguments `(#:python ,python-2)) ; urlgrabber supports python2 only
2849 (home-page "http://urlgrabber.baseurl.org")
2850 (synopsis "High-level cross protocol url-grabber")
2851 (description "@code{urlgrabber} is Python2 library that unifies access to
2852files available on web, FTP or locally. It supports HTTP, FTP and file://
2853protocols, it supports features like HTTP keep-alive, reget, throttling and
2854more.")
2855 (license license:lgpl2.1+)))
2856
85ccc0c2
NG
2857(define-public python-pycares
2858 (package
2859 (name "python-pycares")
2860 (version "2.3.0")
2861 (source
2862 (origin
2863 (method url-fetch)
2864 (uri (pypi-uri "pycares" version))
2865 (sha256
2866 (base32
2867 "0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n"))))
2868 (build-system python-build-system)
2869 (arguments
2870 `(#:tests? #f)) ;tests require internet access
2871 (home-page "http://github.com/saghul/pycares")
2872 (synopsis "Python interface for @code{c-ares}")
2873 (description "@code{pycares} is a Python module which provides an
2874interface to @code{c-ares}, a C library that performs DNS requests and
2875name resolutions asynchronously.")
2876 (license license:expat)))
2eccb414
NG
2877
2878(define-public python-yarl
2879 (package
2880 (name "python-yarl")
2881 (version "1.1.1")
2882 (source
2883 (origin
2884 (method url-fetch)
2885 (uri (pypi-uri "yarl" version))
2886 (sha256
2887 (base32
2888 "1s6z13g8vgxfkkqwhn6imnm7pl7ky9arv4jygnn6bcndcbidg7d6"))))
2889 (build-system python-build-system)
2890 (native-inputs
2891 `(("python-pytest" ,python-pytest)
2892 ("python-pytest-runner" ,python-pytest-runner)))
2893 (propagated-inputs
2894 `(("python-idna" ,python-idna)
2895 ("python-multidict" ,python-multidict)))
2896 (home-page "https://github.com/aio-libs/yarl/")
2897 (synopsis "Yet another URL library")
2898 (description "@code{yarl} module provides handy @code{URL} class
2899for URL parsing and changing.")
2900 (license license:asl2.0)))
961bcdf5
MO
2901
2902(define-public python-google-api-client
2903 (package
2904 (name "python-google-api-client")
2905 (version "1.6.7")
2906 (source
2907 (origin
2908 (method url-fetch)
2909 (uri (pypi-uri "google-api-python-client" version))
2910 (sha256
2911 (base32
2912 "1wpbbbxfpy9mwxdy3kn352cb590ladv574j1aa2l4grjdqw3ln05"))))
2913 (build-system python-build-system)
2914 (arguments
2915 '(#:tests? #f)) ; tests require internet access
2916 (native-inputs
2917 `(("python-httplib2" ,python-httplib2)
2918 ("python-six" ,python-six)
2919 ("python-oauth2client" ,python-oauth2client)
2920 ("python-uritemplate" ,python-uritemplate)))
2921 (home-page "https://github.com/google/google-api-python-client")
2922 (synopsis "Core Python library for accessing Google APIs")
2923 (description "Python client library for Google's discovery based APIs")
2924 (license license:asl2.0)))
2925
2926(define-public python2-google-api-client
2927 (package-with-python2 python-google-api-client))
0750f344
RW
2928
2929(define-public python-hawkauthlib
2930 (package
2931 (name "python-hawkauthlib")
2932 (version "2.0.0")
2933 (source
2934 (origin
2935 (method url-fetch)
2936 (uri (pypi-uri "hawkauthlib" version))
2937 (sha256
2938 (base32
2939 "03ai47s4h8nfnrf25shbfvkm1b9n1ccd4nmmj280sg1fayi69zgg"))))
2940 (build-system python-build-system)
2941 (propagated-inputs
2942 `(("python-requests" ,python-requests)
2943 ("python-webob" ,python-webob)))
2944 (home-page "https://github.com/mozilla-services/hawkauthlib")
2945 (synopsis "Hawk Access Authentication protocol")
2946 (description
2947 "This is a low-level Python library for implementing Hawk Access Authentication,
2948a simple HTTP request-signing scheme.")
2949 (license license:mpl2.0)))
084e14cc
RW
2950
2951(define-public python-pybrowserid
2952 (package
2953 (name "python-pybrowserid")
2954 (version "0.14.0")
2955 (source
2956 (origin
2957 (method url-fetch)
2958 (uri (pypi-uri "PyBrowserID" version))
2959 (sha256
2960 (base32
2961 "1qvi79kfb8x9kxkm5lw2mp42hm82cpps1xknmsb5ghkwx1lpc8kc"))))
2962 (build-system python-build-system)
2963 (propagated-inputs
2964 `(("python-requests" ,python-requests)))
2965 (native-inputs
2966 `(("python-mock" ,python-mock)))
2967 (home-page "https://github.com/mozilla/PyBrowserID")
2968 (synopsis "Python library for the BrowserID protocol")
2969 (description
2970 "This is a Python client library for the BrowserID protocol that
2971underlies Mozilla Persona.")
2972 (license license:mpl2.0)))
f45bb3cc
RW
2973
2974(define-public python-pyfxa
2975 (package
2976 (name "python-pyfxa")
2977 (version "0.6.0")
2978 (source
2979 (origin
2980 (method url-fetch)
2981 (uri (pypi-uri "PyFxA" version))
2982 (sha256
2983 (base32
2984 "0axl16fyrz2r88gnw4b12mk7dpkqscv8c4wsc1y5hicl7bsbc4fm"))))
2985 (build-system python-build-system)
2986 (arguments '(#:tests? #f)) ; 17 tests require network access
2987 (propagated-inputs
2988 `(("python-cryptography" ,python-cryptography)
2989 ("python-hawkauthlib" ,python-hawkauthlib)
2990 ("python-pybrowserid" ,python-pybrowserid)
2991 ("python-requests" ,python-requests)
2992 ("python-six" ,python-six)))
2993 (native-inputs
2994 `(("python-grequests" ,python-grequests)
2995 ("python-mock" ,python-mock)
2996 ("python-responses" ,python-responses)
2997 ("python-unittest2" ,python-unittest2)))
2998 (home-page "https://github.com/mozilla/PyFxA")
2999 (synopsis "Firefox Accounts client library for Python")
3000 (description
3001 "This is a Python library for interacting with the Firefox Accounts
3002ecosystem.")
3003 (license license:mpl2.0)))
68460fbb
LF
3004
3005(define-public python-hyperlink
3006 (package
3007 (name "python-hyperlink")
431a0d26 3008 (version "19.0.0")
68460fbb
LF
3009 (source
3010 (origin
3011 (method url-fetch)
3012 (uri (pypi-uri "hyperlink" version))
3013 (sha256
3014 (base32
431a0d26 3015 "0m2nhi0j8wmgfscf974wd5v1xfq8mah286hil6npy1ys0m3y7222"))))
68460fbb
LF
3016 (build-system python-build-system)
3017 (propagated-inputs
3018 `(("python-idna" ,python-idna)))
3019 (home-page "https://github.com/python-hyper/hyperlink")
3020 (synopsis "Python module to create immutable URLs according to spec")
3021 (description "This package provides a Python module to create immutable, and
3022correct URLs for Python according to RFCs 3986 and 3987.")
3023 (license license:expat)))
00adbac6
LF
3024
3025(define-public python-treq
3026 (package
3027 (name "python-treq")
3028 (version "18.6.0")
3029 (source
3030 (origin
3031 (method url-fetch)
3032 (uri (pypi-uri "treq" version))
3033 (sha256
3034 (base32
3035 "0j4zwq9p1c9piv1vc66nxcv9s6hdinf90jwkbsm91k14npv9zq4i"))))
3036 (build-system python-build-system)
3037 (propagated-inputs
3038 `(("python-attrs" ,python-attrs)
3039 ("python-idna" ,python-idna)
3040 ("python-incremental" ,python-incremental)
3041 ("python-requests" ,python-requests)
3042 ("python-service-identity" ,python-service-identity)
3043 ("python-twisted" ,python-twisted)))
3044 (home-page "https://github.com/twisted/treq")
3045 (synopsis "Requests-like API built on top of twisted.web's Agent")
3046 (description "This package provides an HTTP library inspired by
3047@code{requests}} but written on top of Twisted's @code{Agents}. It offers a
3048high level API for making HTTP requests when using Twisted.")
3049 (license license:expat)))
951c7093
LF
3050
3051(define-public python-autobahn
3052 (package
3053 (name "python-autobahn")
3054 (version "19.2.1")
3055 (source
3056 (origin
3057 (method url-fetch)
3058 (uri (pypi-uri "autobahn" version))
3059 (sha256
3060 (base32
3061 "1mm7j24ls01c7jb1ad5p5cpyxvzgydiyf8b04ihykh2v8g98j0x7"))))
3062 (build-system python-build-system)
3063 (arguments
3064 ;; The tests fail to run:
3065 ;; https://github.com/crossbario/autobahn-python/issues/1117
3066 `(#:tests? #f))
3067 (propagated-inputs
3068 `(("python-cffi" ,python-cffi)
3069 ("python-twisted" ,python-twisted)
3070 ("python-txaio" ,python-txaio)))
3071 (home-page "https://crossbar.io/autobahn/")
3072 (synopsis "Web Application Messaging Protocol implementation")
3073 (description "This package provides an implementation of the @dfn{Web Application
3074Messaging Protocol} (WAMP). WAMP connects components in distributed
3075applications using Publish and Subscribe (PubSub) and routed Remote Procedure
3076Calls (rRPC). It is ideal for distributed, multi-client and server applications
3077such as IoT applications or multi-user database-driven business applications.")
3078 (license license:expat)))
526b1efb
RW
3079
3080(define-public python-ws4py
3081 (package
3082 (name "python-ws4py")
3083 (version "0.5.1")
3084 (source
3085 (origin
3086 (method url-fetch)
3087 (uri (pypi-uri "ws4py" version))
3088 (sha256
3089 (base32
3090 "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19"))))
3091 (build-system python-build-system)
3092 (arguments
3093 `(#:phases
3094 (modify-phases %standard-phases
3095 (add-after 'unpack 'python3.7-compatibility
3096 (lambda _
3097 (substitute* '("ws4py/server/tulipserver.py"
3098 "ws4py/async_websocket.py")
3099 (("asyncio.async")
3100 "asyncio.ensure_future"))
3101 #t))
3102 ;; We don't have a package for cherrypy.
3103 (add-after 'unpack 'remove-cherrypy-support
3104 (lambda _
3105 (delete-file "ws4py/server/cherrypyserver.py")
3106 #t)))))
3107 (propagated-inputs
3108 `(("python-gevent" ,python-gevent)
3109 ("python-tornado" ,python-tornado)))
3110 (home-page "https://github.com/Lawouach/WebSocket-for-Python")
3111 (synopsis "WebSocket client and server library")
3112 (description
3113 "This package provides a WebSocket client and server library for
3114Python.")
3115 (license license:bsd-3)))
57e4592f
RW
3116
3117;; kaldi-gstreamer-server does not yet work with python-ws4py > 0.3.2
3118(define-public python2-ws4py-for-kaldi-gstreamer-server
3119 (package (inherit python-ws4py)
3120 (name "python2-ws4py")
3121 (version "0.3.2")
3122 (source
3123 (origin
3124 (method url-fetch)
3125 (uri (pypi-uri "ws4py" version))
3126 (sha256
3127 (base32
3128 "12ys3dv98awhrxd570vla3hqgzq3avjhq4yafhghhq3a942y1928"))))
3129 (build-system python-build-system)
3130 (arguments
3131 `(#:python ,python-2
3132 #:phases
3133 (modify-phases %standard-phases
3134 ;; We don't have a package for cherrypy.
3135 (add-after 'unpack 'remove-cherrypy-support
3136 (lambda _
3137 (delete-file "ws4py/server/cherrypyserver.py")
3138 #t)))))
3139 (propagated-inputs
3140 `(("python-gevent" ,python2-gevent)
3141 ("python-tornado" ,python2-tornado)))))