gnu: r-seqpattern: Update to 1.16.0.
[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)
864 ,@(package-propagated-inputs terminado))))))
865
589e3f4e
LC
866(define-public python-wsgi-intercept
867 (package
868 (name "python-wsgi-intercept")
869 (version "1.2.2")
870 (source (origin
871 (method url-fetch)
2b221866 872 (uri (pypi-uri "wsgi_intercept" version))
589e3f4e
LC
873 (sha256
874 (base32
875 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
876 (build-system python-build-system)
877 (propagated-inputs
878 `(("python-six" ,python-six)))
879 (native-inputs
880 `(("python-pytest" ,python-pytest)
881 ("python-httplib2" ,python-httplib2)
882 ("python-requests" ,python-requests)
883 ("python-urllib3" ,python-urllib3)))
884 (synopsis "Puts a WSGI application in place of a real URI for testing")
885 (description "Wsgi_intercept installs a WSGI application in place of a real
886URI for testing. Testing a WSGI application normally involves starting a
887server at a local host and port, then pointing your test code to that address.
888Instead, this library lets you intercept calls to any specific host/port
889combination and redirect them into a WSGI application importable by your test
890program. Thus, you can avoid spawning multiple processes or threads to test
891your Web app.")
892 (home-page "https://github.com/cdent/wsgi-intercept")
893 (license license:expat)))
894
1b2f753d
LC
895(define-public python-webob
896 (package
897 (name "python-webob")
898 (version "1.5.1")
899 (source
900 (origin
901 (method url-fetch)
902 (uri (pypi-uri "WebOb" version))
903 (sha256
904 (base32
905 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
906 (build-system python-build-system)
907 (native-inputs
908 `(("python-nose" ,python-nose)))
9be5ecdf 909 (home-page "https://webob.org/")
1b2f753d
LC
910 (synopsis "WSGI request and response object")
911 (description
912 "WebOb provides wrappers around the WSGI request environment, and an
913object to help create WSGI responses.")
914 (license license:expat)))
915
916(define-public python2-webob
917 (package-with-python2 python-webob))
918
919(define-public python-zope-event
920 (package
921 (name "python-zope-event")
922 (version "4.1.0")
923 (source
924 (origin
925 (method url-fetch)
da501c49 926 (uri (pypi-uri "zope.event" version))
1b2f753d
LC
927 (sha256
928 (base32
929 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
930 (build-system python-build-system)
9be5ecdf 931 (home-page "https://pypi.python.org/pypi/zope.event")
1b2f753d
LC
932 (synopsis "Event publishing system for Python")
933 (description "Zope.event provides an event publishing API, intended for
934use by applications which are unaware of any subscribers to their events. It
935is a simple event-dispatching system on which more sophisticated event
936dispatching systems can be built.")
937 (license license:zpl2.1)))
938
939(define-public python2-zope-event
940 (package-with-python2 python-zope-event))
941
942(define-public python-zope-interface
943 (package
944 (name "python-zope-interface")
8142eadd 945 (version "4.6.0")
1b2f753d
LC
946 (source
947 (origin
948 (method url-fetch)
ba93e239 949 (uri (pypi-uri "zope.interface" version))
1b2f753d
LC
950 (sha256
951 (base32
8142eadd 952 "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v"))))
1b2f753d
LC
953 (build-system python-build-system)
954 (native-inputs
955 `(("python-zope-event" ,python-zope-event)))
956 (home-page "https://github.com/zopefoundation/zope.interface")
957 (synopsis "Python implementation of the \"design by contract\"
958methodology")
959 (description "Zope.interface provides an implementation of \"object
960interfaces\" for Python. Interfaces are a mechanism for labeling objects as
961conforming to a given API or contract.")
962 (license license:zpl2.1)))
963
964(define-public python2-zope-interface
965 (package-with-python2 python-zope-interface))
966
967(define-public python-zope-exceptions
968 (package
969 (name "python-zope-exceptions")
970 (version "4.0.8")
971 (source
972 (origin
973 (method url-fetch)
3d010466 974 (uri (pypi-uri "zope.exceptions" version))
1b2f753d
LC
975 (sha256
976 (base32
977 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
978 (build-system python-build-system)
979 (arguments
980 '(#:tests? #f)) ; circular dependency with zope.testrunner
981 (propagated-inputs
982 `(("python-zope-interface" ,python-zope-interface)))
983 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
984 (synopsis "Zope exceptions")
985 (description "Zope.exceptions provides general-purpose exception types
986that have uses outside of the Zope framework.")
987 (license license:zpl2.1)))
988
989(define-public python2-zope-exceptions
990 (package-with-python2 python-zope-exceptions))
991
992(define-public python-zope-testing
993 (package
994 (name "python-zope-testing")
9d981019 995 (version "4.6.2")
1b2f753d
LC
996 (source
997 (origin
998 (method url-fetch)
f9a6457d 999 (uri (pypi-uri "zope.testing" version))
1b2f753d
LC
1000 (sha256
1001 (base32
9d981019 1002 "0iiq54hjhkk2gpvzfjac70vyn4r0kw0ngvicshxbdwrkgf2gjq3g"))
1b2f753d
LC
1003 (modules '((guix build utils)))
1004 (snippet
1005 '(begin
1006 ;; Remove pre-compiled .pyc files backup files from source.
1007 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
1008 #t))))
1009 (build-system python-build-system)
9be5ecdf 1010 (home-page "https://pypi.python.org/pypi/zope.testing")
1b2f753d
LC
1011 (synopsis "Zope testing helpers")
1012 (description "Zope.testing provides a number of testing utilities for HTML
1013forms, HTTP servers, regular expressions, and more.")
1014 (license license:zpl2.1)))
1015
1016(define-public python2-zope-testing
1017 (package-with-python2 python-zope-testing))
1018
1019(define-public python-zope-testrunner
1020 (package
1021 (name "python-zope-testrunner")
1022 (version "4.4.9")
1023 (source
1024 (origin
1025 (method url-fetch)
d409c993 1026 (uri (pypi-uri "zope.testrunner" version ".zip"))
1b2f753d
LC
1027 (sha256
1028 (base32
1029 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
1030 (build-system python-build-system)
1031 (arguments
1032 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1033 (native-inputs
1034 `(("python-six" ,python-six)
1035 ;("python-zope-interface" ,python-zope-interface)
1036 ("python-zope-exceptions" ,python-zope-exceptions)
1037 ("python-zope-testing" ,python-zope-testing)
1038 ("unzip" ,unzip)))
1039 (propagated-inputs
1040 `(("python-zope-interface" ,python-zope-interface)))
9be5ecdf 1041 (home-page "https://pypi.python.org/pypi/zope.testrunner")
1b2f753d
LC
1042 (synopsis "Zope testrunner script")
1043 (description "Zope.testrunner provides a script for running Python
1044tests.")
1045 (license license:zpl2.1)))
1046
1047(define-public python2-zope-testrunner
1048 (let ((base (package-with-python2 python-zope-testrunner)))
1049 (package
1050 (inherit base)
1051 (native-inputs
1052 (append (package-native-inputs base)
1053 `(("python2-subunit" ,python2-subunit)
1054 ("python2-mimeparse" ,python2-mimeparse)))))))
1055
1056(define-public python-zope-i18nmessageid
1057 (package
1058 (name "python-zope-i18nmessageid")
1059 (version "4.0.3")
1060 (source
1061 (origin
1062 (method url-fetch)
8a84d796 1063 (uri (pypi-uri "zope.i18nmessageid" version))
1b2f753d
LC
1064 (sha256
1065 (base32
1066 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
1067 (build-system python-build-system)
9be5ecdf 1068 (home-page "https://pypi.python.org/pypi/zope.i18nmessageid")
1b2f753d
LC
1069 (synopsis "Message identifiers for internationalization")
1070 (description "Zope.i18nmessageid provides facilities for declaring
1071internationalized messages within program source text.")
1072 (license license:zpl2.1)))
1073
1074(define-public python2-zope-i18nmessageid
1075 (package-with-python2 python-zope-i18nmessageid))
1076
1077(define-public python-zope-schema
1078 (package
1079 (name "python-zope-schema")
1080 (version "4.4.2")
1081 (source
1082 (origin
1083 (method url-fetch)
ab9e1740 1084 (uri (pypi-uri "zope.schema" version))
1b2f753d
LC
1085 (sha256
1086 (base32
1087 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
1088 (build-system python-build-system)
1089 (arguments
1090 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
1091 (propagated-inputs
1092 `(("python-zope-event" ,python-zope-event)
c695fb76 1093 ("python-zope-exceptions" ,python-zope-exceptions)
1b2f753d
LC
1094 ("python-zope-interface" ,python-zope-interface)))
1095 (native-inputs
1096 `(("python-zope-testing" ,python-zope-testing)
1097 ("python-coverage" ,python-coverage)
1098 ("python-nose" ,python-nose)))
9be5ecdf 1099 (home-page "https://pypi.python.org/pypi/zope.schema")
1b2f753d
LC
1100 (synopsis "Zope data schemas")
1101 (description "Zope.scheme provides extensions to zope.interface for
1102defining data schemas.")
1103 (license license:zpl2.1)))
1104
1105(define-public python2-zope-schema
1106 (package-with-python2 python-zope-schema))
1107
1108(define-public python-zope-configuration
1109 (package
1110 (name "python-zope-configuration")
1111 (version "4.0.3")
1112 (source (origin
1113 (method url-fetch)
cdf14a67 1114 (uri (pypi-uri "zope.configuration" version))
1b2f753d
LC
1115 (sha256
1116 (base32
1117 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
1118 (build-system python-build-system)
1119 (arguments
1120 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1121 (propagated-inputs
1122 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1123 ("python-zope-schema" ,python-zope-schema)))
9be5ecdf 1124 (home-page "https://pypi.python.org/pypi/zope.configuration")
1b2f753d
LC
1125 (synopsis "Zope Configuration Markup Language")
1126 (description "Zope.configuration implements ZCML, the Zope Configuration
1127Markup Language.")
1128 (license license:zpl2.1)))
1129
1130(define-public python2-zope-configuration
1131 (package-with-python2 python-zope-configuration))
1132
1133(define-public python-zope-proxy
1134 (package
1135 (name "python-zope-proxy")
1136 (version "4.1.6")
1137 (source
1138 (origin
1139 (method url-fetch)
510cacc7 1140 (uri (pypi-uri "zope.proxy" version))
1b2f753d
LC
1141 (sha256
1142 (base32
1143 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
1144 (build-system python-build-system)
1145 (arguments
1146 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1147 (propagated-inputs
1148 `(("python-zope-interface" ,python-zope-interface)))
9be5ecdf 1149 (home-page "https://pypi.python.org/pypi/zope.proxy")
1b2f753d
LC
1150 (synopsis "Generic, transparent proxies")
1151 (description "Zope.proxy provides generic, transparent proxies for Python.
1152Proxies are special objects which serve as mostly-transparent wrappers around
1153another object, intervening in the apparent behavior of the wrapped object
1154only when necessary to apply the policy (e.g., access checking, location
1155brokering, etc.) for which the proxy is responsible.")
1156 (license license:zpl2.1)))
1157
1158(define-public python2-zope-proxy
1159 (package-with-python2 python-zope-proxy))
1160
1161(define-public python-zope-location
1162 (package
1163 (name "python-zope-location")
1164 (version "4.0.3")
1165 (source
1166 (origin
1167 (method url-fetch)
6e6bbc02 1168 (uri (pypi-uri "zope.location" version))
1b2f753d
LC
1169 (sha256
1170 (base32
1171 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
1172 (build-system python-build-system)
1173 (arguments
1174 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
1175 (propagated-inputs
1176 `(("python-zope-proxy" ,python-zope-proxy)
1177 ("python-zope-schema" ,python-zope-schema)))
9be5ecdf 1178 (home-page "https://pypi.python.org/pypi/zope.location/")
1b2f753d
LC
1179 (synopsis "Zope location library")
1180 (description "Zope.location implements the concept of \"locations\" in
1181Zope3, which are are special objects that have a structural location.")
1182 (license license:zpl2.1)))
1183
1184(define-public python2-zope-location
1185 (package-with-python2 python-zope-location))
1186
1187(define-public python-zope-security
1188 (package
1189 (name "python-zope-security")
1190 (version "4.0.3")
1191 (source
1192 (origin
1193 (method url-fetch)
fc283a5e 1194 (uri (pypi-uri "zope.security" version))
1b2f753d
LC
1195 (sha256
1196 (base32
1197 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
1198 (build-system python-build-system)
1199 (arguments
1200 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
1201 (propagated-inputs
1202 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1203 ("python-zope-proxy" ,python-zope-proxy)
1204 ("python-zope-schema" ,python-zope-schema)))
1205 (native-inputs
1206 `(("python-six" ,python-six)
1207 ("python-zope-component" ,python-zope-component)
1208 ("python-zope-configuration" ,python-zope-configuration)
1209 ("python-zope-location" ,python-zope-location)
1210 ("python-zope-testrunner" ,python-zope-testrunner)
1211 ("python-zope-testing" ,python-zope-testing)))
9be5ecdf 1212 (home-page "https://pypi.python.org/pypi/zope.security")
1b2f753d
LC
1213 (synopsis "Zope security framework")
1214 (description "Zope.security provides a generic mechanism to implement
1215security policies on Python objects.")
1216 (license license:zpl2.1)))
1217
1218(define-public python2-zope-security
1219 (let ((zope-security (package-with-python2 python-zope-security)))
1220 (package (inherit zope-security)
1221 (propagated-inputs
1222 `(("python2-zope-testrunner" ,python2-zope-testrunner)
1223 ,@(alist-delete
1224 "python-zope-testrunner"
1225 (package-propagated-inputs zope-security)))))))
1226
1227(define-public python-zope-component
1228 (package
1229 (name "python-zope-component")
1230 (version "4.3.0")
1231 (source
1232 (origin
1233 (method url-fetch)
1234 (uri (pypi-uri "zope.component" version))
1235 (sha256
1236 (base32
1237 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
1238 (build-system python-build-system)
1239 (arguments
1240 ;; Skip tests due to circular dependency with python-zope-security.
1241 '(#:tests? #f))
1242 (native-inputs
1243 `(("python-zope-testing" ,python-zope-testing)))
1244 (propagated-inputs
1245 `(("python-zope-event" ,python-zope-event)
1246 ("python-zope-interface" ,python-zope-interface)
1247 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1248 ("python-zope-configuration" ,python-zope-configuration)))
1249 (home-page "https://github.com/zopefoundation/zope.component")
1250 (synopsis "Zope Component Architecture")
1251 (description "Zope.component represents the core of the Zope Component
1252Architecture. Together with the zope.interface package, it provides
1253facilities for defining, registering and looking up components.")
1254 (license license:zpl2.1)))
1255
1256(define-public python2-zope-component
1257 (package-with-python2 python-zope-component))
1258
1259(define-public python-ndg-httpsclient
1260 (package
1261 (name "python-ndg-httpsclient")
57d5d3da 1262 (version "0.5.1")
1b2f753d
LC
1263 (source (origin
1264 (method url-fetch)
1265 (uri (pypi-uri "ndg_httpsclient" version))
1266 (sha256
1267 (base32
57d5d3da 1268 "0412b7i1s4vj7lz9r72nmb28h9syd4q2x89bdirkkc3a6z8awbyp"))))
1b2f753d
LC
1269 (build-system python-build-system)
1270 (arguments
1271 '(;; The tests appear to require networking.
1272 #:tests? #f))
1273 (propagated-inputs
1274 `(("python-pyopenssl" ,python-pyopenssl)))
1275 (synopsis "HTTPS support for Python's httplib and urllib2")
1276 (description "This is a HTTPS client implementation for httplib and urllib2
eed0f1e8
TGR
1277based on PyOpenSSL. PyOpenSSL provides a more fully-featured SSL implementation
1278over the default provided with Python and, importantly, enables full
1279verification of the SSL peer.")
1b2f753d
LC
1280 (home-page "https://github.com/cedadev/ndg_httpsclient/")
1281 (license license:bsd-3)))
1282
1283;; python2-openssl requires special care, so package-with-python2 is
1284;; insufficient.
1285(define-public python2-ndg-httpsclient
1286 (package (inherit python-ndg-httpsclient)
1287 (name "python2-ndg-httpsclient")
e3e74e40
TGR
1288 (arguments
1289 (substitute-keyword-arguments (package-arguments python-ndg-httpsclient)
1290 ((#:python _) python-2)))
1b2f753d
LC
1291 (propagated-inputs
1292 `(("python2-pyopenssl" ,python2-pyopenssl)))))
1293
1294(define-public python-websocket-client
1295 (package
1296 (name "python-websocket-client")
354d27e5 1297 (version "0.54.0")
1b2f753d
LC
1298 (source
1299 (origin
1300 (method url-fetch)
1301 (uri (pypi-uri "websocket_client" version))
1302 (sha256
1303 (base32
354d27e5 1304 "0j88zmikaypf38lvpkf4aaxrjp9j07dmy5ghj7kli0fv3p4n45g5"))))
1b2f753d
LC
1305 (build-system python-build-system)
1306 (propagated-inputs
1307 `(("python-six" ,python-six)))
1308 (home-page "https://github.com/liris/websocket-client")
1309 (synopsis "WebSocket client for Python")
1310 (description "The Websocket-client module provides the low level APIs for
1311WebSocket usage in Python programs.")
354d27e5 1312 (properties `((python2-variant . ,(delay python2-websocket-client))))
1b2f753d
LC
1313 (license license:lgpl2.1+)))
1314
1315(define-public python2-websocket-client
354d27e5
EF
1316 (let ((base (package-with-python2
1317 (strip-python2-variant python-websocket-client))))
1318 (package
1319 (inherit base)
1320 (native-inputs
1321 `(("python2-backport-ssl-match-hostname"
1322 ,python2-backport-ssl-match-hostname)
1323 ,@(package-native-inputs base))))))
1b2f753d 1324
589e3f4e
LC
1325(define-public python-requests
1326 (package
1327 (name "python-requests")
b5c2e720 1328 (version "2.21.0")
589e3f4e
LC
1329 (source (origin
1330 (method url-fetch)
1331 (uri (pypi-uri "requests" version))
1332 (sha256
1333 (base32
b5c2e720 1334 "13jr0wkj9c2j8c0c8iaal9iivi0bpxghnsdn6lxcpnmc657q4ajh"))))
589e3f4e 1335 (build-system python-build-system)
85ef07c4
MB
1336 (propagated-inputs
1337 `(("python-certifi" ,python-certifi)
1338 ("python-chardet" ,python-chardet)
1339 ("python-idna" ,python-idna)
1340 ("python-urllib3" ,python-urllib3)))
589e3f4e
LC
1341 (arguments
1342 ;; FIXME: Some tests require network access.
1343 '(#:tests? #f))
1344 (home-page "http://python-requests.org/")
1345 (synopsis "Python HTTP library")
1346 (description
1347 "Requests is a Python HTTP client library. It aims to be easier to use
1348than Python’s urllib2 library.")
1349 (license license:asl2.0)))
1350
1351;; Some software requires an older version of Requests, notably Docker
1352;; Compose.
1353(define-public python-requests-2.7
1354 (package (inherit python-requests)
1355 (version "2.7.0")
1356 (source (origin
1357 (method url-fetch)
1358 (uri (pypi-uri "requests" version))
1359 (sha256
1360 (base32
1361 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
1362
1363(define-public python2-requests
1364 (package-with-python2 python-requests))
1365
1b2f753d
LC
1366(define-public python-requests-mock
1367 (package
1368 (name "python-requests-mock")
1369 (version "1.3.0")
1370 (source
1371 (origin
1372 (method url-fetch)
1373 (uri (pypi-uri "requests-mock" version))
1374 (sha256
1375 (base32
1376 "0jr997dvk6zbmhvbpcv3rajrgag69mcsm1ai3w3rgk2jdh6rg1mx"))))
1377 (build-system python-build-system)
1378 (propagated-inputs
1379 `(("python-requests" ,python-requests)
1380 ("python-six" ,python-six)))
1381 (native-inputs
1382 `(("python-pbr" ,python-pbr)
1383 ("python-discover" ,python-discover)
1384 ("python-docutils" ,python-docutils)
1385 ("python-fixtures" ,python-fixtures)
1386 ("python-mock" ,python-mock)
1387 ("python-sphinx" ,python-sphinx)
1388 ("python-testrepository" ,python-testrepository)
1389 ("python-testtools" ,python-testtools)))
1390 (home-page "https://requests-mock.readthedocs.org/")
1391 (synopsis "Mock out responses from the requests package")
1392 (description
1393 "This module provides a building block to stub out the HTTP requests
1394portions of your testing code.")
1395 (properties `((python2-variant . ,(delay python2-requests-mock))))
1396 (license license:asl2.0)))
1397
1398(define-public python2-requests-mock
1399 (package (inherit (package-with-python2
1400 (strip-python2-variant python-requests-mock)))
1401 (arguments
1402 `(#:python ,python-2
1403 ;; FIXME: 'subunit.run discover: error: no such option: --list'
1404 #:tests? #f))))
1405
1406(define-public python-requests-toolbelt
1407 (package
1408 (name "python-requests-toolbelt")
1409 (version "0.8.0")
1410 (source (origin
1411 (method url-fetch)
1412 (uri (pypi-uri "requests-toolbelt" version))
1413 (sha256
1414 (base32
1415 "1dc7l42i4080r8i4m9fj51jx367lqkai170vrv7wd93gdj9k39gn"))))
1416 (build-system python-build-system)
1417 (native-inputs
1418 `(("python-betamax" ,python-betamax)
1419 ("python-mock" ,python-mock)
1420 ("python-pytest" ,python-pytest)))
1421 (propagated-inputs
1422 `(("python-requests" ,python-requests)))
1423 (synopsis "Extensions to python-requests")
1424 (description "This is a toolbelt of useful classes and functions to be used
1425with python-requests.")
1426 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
1427 (license license:asl2.0)))
1428
1429(define-public python2-requests-toolbelt
1430 (package-with-python2 python-requests-toolbelt))
1431
589e3f4e
LC
1432(define-public python-oauthlib
1433 (package
1434 (name "python-oauthlib")
1435 (version "1.0.3")
1436 (source (origin
1437 (method url-fetch)
1438 (uri (pypi-uri "oauthlib" version))
1439 (sha256
1440 (base32
1441 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
1442 (build-system python-build-system)
1443 (native-inputs
1444 `(("python-nose" ,python-nose)
1445 ("python-mock" ,python-mock)
1446 ("python-cryptography" ,python-cryptography)
1447 ("python-pyjwt" ,python-pyjwt)
1448 ("python-blinker" ,python-blinker)))
1449 (home-page "https://github.com/idan/oauthlib")
1450 (synopsis "OAuth implementation for Python")
1451 (description
1452 "Oauthlib is a generic, spec-compliant, thorough implementation of the
1453OAuth request-signing logic.")
1454 (license license:bsd-3)
1455 (properties `((python2-variant . ,(delay python2-oauthlib))))))
1456
1457(define-public python2-oauthlib
1458 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
1459 (package
1460 (inherit base)
1461 (native-inputs `(("python2-unittest2" ,python2-unittest2)
1462 ,@(package-native-inputs base))))))
1463
1b2f753d
LC
1464(define-public python-rauth
1465 (package
1466 (name "python-rauth")
1467 (version "0.7.3")
1468 (source
1469 (origin
1470 (method url-fetch)
1471 (uri (pypi-uri "rauth" version))
1472 (sha256
1473 (base32
1474 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
1475 (build-system python-build-system)
1476 (arguments
1477 `(#:test-target "check"))
1478 (propagated-inputs
1479 `(("python-requests" ,python-requests)))
1480 (home-page "https://github.com/litl/rauth")
1481 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
1482 (description
1483 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
1484provides service wrappers for convenient connection initialization and
1485authenticated session objects providing things like keep-alive.")
1486 (license license:expat)
1487 (properties `((python2-variant . ,(delay python2-rauth))))))
1488
1489(define-public python2-rauth
1490 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
1491 (package
1492 (inherit base)
1493 (native-inputs `(("python2-unittest2" ,python2-unittest2)
1494 ,@(package-native-inputs base))))))
1495
1496(define-public python-urllib3
1497 (package
1498 (name "python-urllib3")
20c5e2f4 1499 (version "1.24.1")
1b2f753d
LC
1500 (source
1501 (origin
1502 (method url-fetch)
1503 (uri (pypi-uri "urllib3" version))
1504 (sha256
1505 (base32
20c5e2f4 1506 "08lwd9f3hqznyf32vnzwvp87pchx062nkbgyrf67rwlkgj0jk5fy"))))
1b2f753d
LC
1507 (build-system python-build-system)
1508 (arguments `(#:tests? #f))
1b2f753d
LC
1509 (propagated-inputs
1510 `(;; These 5 inputs are used to build urrlib3[secure]
1511 ("python-certifi" ,python-certifi)
20c5e2f4 1512 ("python-cryptography" ,python-cryptography)
1b2f753d
LC
1513 ("python-idna" ,python-idna)
1514 ("python-ipaddress" ,python-ipaddress)
20c5e2f4
EF
1515 ("python-pyopenssl" ,python-pyopenssl)
1516 ("python-pysocks" ,python-pysocks)))
1517 (home-page "https://urllib3.readthedocs.io/")
1b2f753d
LC
1518 (synopsis "HTTP library with thread-safe connection pooling")
1519 (description
1520 "Urllib3 supports features left out of urllib and urllib2 libraries. It
1521can reuse the same socket connection for multiple requests, it can POST files,
1522supports url redirection and retries, and also gzip and deflate decoding.")
1523 (license license:expat)))
1524
1525(define-public python2-urllib3
1526 (package-with-python2 python-urllib3))
1527
1528(define-public awscli
1529 (package
1530 (name "awscli")
331ebb7f 1531 (version "1.14.41")
1b2f753d
LC
1532 (source
1533 (origin
1534 (method url-fetch)
1535 (uri (pypi-uri name version))
1536 (sha256
1537 (base32
331ebb7f 1538 "0sispclx263lybbk19zp1n9yhg8xxx4jddypzgi24vpjaqnsbwlc"))))
1b2f753d
LC
1539 (build-system python-build-system)
1540 (propagated-inputs
1541 `(("python-colorama" ,python-colorama)
1542 ("python-botocore" ,python-botocore)
1543 ("python-s3transfer" ,python-s3transfer)
1544 ("python-docutils" ,python-docutils)
1545 ("python-pyyaml" ,python-pyyaml)
1546 ("python-rsa" ,python-rsa)))
1547 (arguments
1548 ;; FIXME: The 'pypi' release does not contain tests.
1549 '(#:tests? #f))
1550 (home-page "https://aws.amazon.com/cli/")
1551 (synopsis "Command line client for AWS")
1552 (description "AWS CLI provides a unified command line interface to the
1553Amazon Web Services (AWS) API.")
1554 (license license:asl2.0)))
1555
1556(define-public python-wsgiproxy2
1557 (package
1558 (name "python-wsgiproxy2")
38e1095d 1559 (version "0.4.5")
1b2f753d
LC
1560 (source
1561 (origin
1562 (method url-fetch)
e38a8012 1563 (uri (pypi-uri "WSGIProxy2" version ".tar.gz"))
1b2f753d
LC
1564 (sha256
1565 (base32
38e1095d 1566 "19d9dva282vfjs784i0zkxp078lxfz4h3f621z30ij9wbf5rba6a"))))
1b2f753d 1567 (build-system python-build-system)
1b2f753d 1568 (native-inputs
e38a8012 1569 `(("python-webtest" ,python-webtest)))
1b2f753d 1570 (propagated-inputs
e38a8012
TGR
1571 `(("python-requests" ,python-requests)
1572 ("python-six" ,python-six)
1573 ("python-urllib3" ,python-urllib3)
1b2f753d 1574 ("python-webob" ,python-webob)))
e38a8012 1575 (home-page "https://github.com/gawel/WSGIProxy2/")
1b2f753d
LC
1576 (synopsis "WSGI Proxy with various http client backends")
1577 (description "WSGI turns HTTP requests into WSGI function calls.
1578WSGIProxy turns WSGI function calls into HTTP requests.
1579It also includes code to sign requests and pass private data,
1580and to spawn subprocesses to handle requests.")
1581 (license license:expat)))
1582
1583(define-public python2-wsgiproxy2
1584 (package-with-python2 python-wsgiproxy2))
1585
1586(define-public python-pastedeploy
1587 (package
1588 (name "python-pastedeploy")
1589 (version "1.5.2")
1590 (source
1591 (origin
1592 (method url-fetch)
1593 (uri (pypi-uri "PasteDeploy" version))
1594 (sha256
1595 (base32
1596 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
1597 (build-system python-build-system)
1598 (native-inputs
1599 `(("python-nose" ,python-nose)))
1600 (home-page "http://pythonpaste.org/deploy/")
1601 (synopsis
1602 "Load, configure, and compose WSGI applications and servers")
1603 (description
1604 "This tool provides code to load WSGI applications and servers from URIs;
1605these URIs can refer to Python Eggs for INI-style configuration files. Paste
1606Script provides commands to serve applications based on this configuration
1607file.")
1608 (license license:expat)))
1609
1610(define-public python2-pastedeploy
1611 (package-with-python2 python-pastedeploy))
1612
1613(define-public python-webtest
1614 (package
1615 (name "python-webtest")
0596a7af 1616 (version "2.0.33")
1b2f753d
LC
1617 (source
1618 (origin
1619 (method url-fetch)
1620 (uri (pypi-uri "WebTest" version))
1621 (sha256
1622 (base32
0596a7af 1623 "1l3z0cwqslsf4rcrhi2gr8kdfh74wn2dw76376i4g9i38gz8wd21"))))
1b2f753d
LC
1624 (build-system python-build-system)
1625 (arguments
0596a7af
TGR
1626 ;; Tests require python-pyquery, which creates a circular dependency.
1627 `(#:tests? #f))
1b2f753d
LC
1628 (propagated-inputs
1629 `(("python-waitress" ,python-waitress)
1630 ("python-webob" ,python-webob)
1631 ("python-six" ,python-six)
1632 ("python-beautifulsoup4" ,python-beautifulsoup4)))
1633 (home-page "http://webtest.pythonpaste.org/")
1634 (synopsis "Helper to test WSGI applications")
1635 (description "Webtest allows you to test your Python web applications
1636without starting an HTTP server. It supports anything that supports the
1637minimum of WSGI.")
1638 (license license:expat)))
1639
1640(define-public python2-webtest
1641 (package-with-python2 python-webtest))
1642
1643(define-public python-flask
1644 (package
1645 (name "python-flask")
67eda45b 1646 (version "1.0.2")
1b2f753d
LC
1647 (source (origin
1648 (method url-fetch)
67eda45b 1649 (uri (pypi-uri "flask" version))
1b2f753d
LC
1650 (sha256
1651 (base32
67eda45b 1652 "0j6f4a9rpfh25k1gp7azqhnni4mb4fgy50jammgjgddw1l3w0w92"))))
1b2f753d 1653 (build-system python-build-system)
47403955
EF
1654 (arguments
1655 '(#:phases
1656 (modify-phases %standard-phases
1657 (replace 'check
1658 (lambda _
1659 (invoke "python" "-m" "pytest"))))))
1660 (native-inputs
1661 `(("python-pytest" ,python-pytest)))
1b2f753d
LC
1662 (propagated-inputs
1663 `(("python-itsdangerous" ,python-itsdangerous)
1664 ("python-jinja2" ,python-jinja2)
1665 ("python-click" ,python-click)
1666 ("python-werkzeug" ,python-werkzeug)))
67eda45b 1667 (home-page "https://www.palletsprojects.com/p/flask/")
1b2f753d
LC
1668 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
1669 (description "Flask is a micro web framework based on the Werkzeug toolkit
1670and Jinja2 template engine. It is called a micro framework because it does not
1671presume or force a developer to use a particular tool or library.")
1672 (license license:bsd-3)))
1673
1674(define-public python2-flask
1675 (package-with-python2 python-flask))
1676
1677(define-public python-flask-wtf
1678 (package
1679 (name "python-flask-wtf")
1680 (version "0.13.1")
1681 (source
1682 (origin
1683 (method url-fetch)
1684 (uri (pypi-uri "Flask-WTF" version))
1685 (sha256
1686 (base32
1687 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
1688 (build-system python-build-system)
1689 (arguments
1690 '(#:phases
1691 (modify-phases %standard-phases
1692 (add-before 'check 'drop-failing-test
1693 (lambda _
1694 ;; FIXME: This file tries resolving an external server, which
1695 ;; fails. Try to patch out the offending section instead of
1696 ;; deleting the whole thing.
1697 (delete-file "tests/test_recaptcha.py")
1698 #t)))))
1699 (propagated-inputs
1700 `(("python-flask-babel" ,python-flask-babel)
1701 ("python-babel" ,python-babel)
1702 ("python-wtforms" ,python-wtforms)))
1703 (native-inputs
1704 `(("python-nose" ,python-nose)))
1705 (home-page "https://github.com/lepture/flask-wtf")
1706 (synopsis "Simple integration of Flask and WTForms")
1707 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
1708upload, and reCAPTCHA.")
1709 (license license:bsd-3)))
1710
1711(define-public python2-flask-wtf
1712 (package-with-python2 python-flask-wtf))
1713
1714(define-public python-flask-multistatic
1715 (package
1716 (name "python-flask-multistatic")
1717 (version "1.0")
1718 (source
1719 (origin
1720 (method url-fetch)
1721 (uri (pypi-uri "flask-multistatic" version))
1722 (sha256
1723 (base32
1724 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
1725 (build-system python-build-system)
1726 (propagated-inputs
1727 `(("python-flask" ,python-flask)))
1728 (home-page "https://pagure.io/flask-multistatic")
1729 (synopsis "Flask plugin to allow overriding static files")
1730 (description "@code{flask-multistatic} is a flask plugin that adds support
1731for overriding static files.")
1732 (license license:gpl3+)))
1733
1734(define-public python2-flask-multistatic
1735 (package-with-python2 python-flask-multistatic))
1736
1737(define-public python-cookies
1738 (package
1739 (name "python-cookies")
1740 (version "2.2.1")
1741 (source (origin
1742 (method url-fetch)
1743 (uri (pypi-uri "cookies" version))
1744 (sha256
1745 (base32
1746 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
1747 (build-system python-build-system)
1748 (arguments
1749 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
1750 #:tests? #f))
1751 (native-inputs
1752 `(("python-pytest" ,python2-pytest)))
1753 (synopsis "HTTP cookie parser and renderer")
1754 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
1755Python.")
1756 (home-page "https://gitlab.com/sashahart/cookies")
1757 (license license:expat)))
1758
1759(define-public python2-cookies
1760 (package-with-python2 python-cookies))
1761
1762(define-public python-responses
1763 (package
1764 (name "python-responses")
1765 (version "0.5.1")
1766 (source (origin
1767 (method url-fetch)
1768 (uri (pypi-uri "responses" version))
1769 (sha256
1770 (base32
1771 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
1772 (build-system python-build-system)
1773 (arguments
1774 `(;; Test suite is not distributed:
1775 ;; https://github.com/getsentry/responses/issues/38
1776 #:tests? #f))
1777 (native-inputs
1778 `(("python-mock" ,python-mock)))
1779 (propagated-inputs
1780 `(("python-requests" ,python-requests)
1781 ("python-cookies" ,python-cookies)
1782 ("python-six" ,python-six)))
1783 (home-page "https://github.com/getsentry/responses")
1784 (synopsis "Utility for mocking out the `requests` Python library")
1785 (description "A utility library for mocking out the `requests` Python
1786library.")
1787 (license license:asl2.0)))
1788
1789(define-public python2-responses
1790 (package-with-python2 python-responses))
1791
d08b3258
RW
1792(define-public python-grequests
1793 (package
1794 (name "python-grequests")
1795 (version "0.3.0")
1796 (source
1797 (origin
1798 (method url-fetch)
1799 (uri (pypi-uri "grequests" version))
1800 (sha256
1801 (base32
1802 "1j9icncllbkv7x5719b20mx670c6q1jrdx1sakskkarvx3pc8h8g"))))
1803 (build-system python-build-system)
1804 (propagated-inputs
1805 `(("python-gevent" ,python-gevent)
1806 ("python-requests" ,python-requests)))
1807 (native-inputs
1808 `(("python-nose" ,python-nose)))
1809 (home-page "https://github.com/kennethreitz/grequests")
1810 (synopsis "Python library for asynchronous HTTP requests")
1811 (description "GRequests is a Python library that allows you to use
1812@code{Requests} with @code{Gevent} to make asynchronous HTTP Requests easily")
1813 (license license:bsd-2)))
1814
1b2f753d
LC
1815(define-public python-geventhttpclient
1816 (package
1817 (name "python-geventhttpclient")
1818 (version "1.3.1")
1819 (source (origin
1820 (method url-fetch)
1821 (uri (pypi-uri "geventhttpclient" version))
1822 (sha256
1823 (base32
1824 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
1825 (modules '((guix build utils)))
1826 (snippet
1827 '(begin
1828 ;; Delete pre-compiled files.
1829 (for-each delete-file (find-files "src/geventhttpclient"
1830 ".*\\.pyc"))
1831 #t))))
1832 (build-system python-build-system)
1833 (arguments
1834 '(#:phases
1835 (modify-phases %standard-phases
1836 (add-after 'unpack 'delete-network-tests
1837 (lambda _
1838 (delete-file "src/geventhttpclient/tests/test_client.py")
1839 #t))
1840 (delete 'check)
1841 (add-after 'install 'check
1842 (lambda* (#:key inputs outputs #:allow-other-keys)
1843 (add-installed-pythonpath inputs outputs)
0e02e819
MB
1844 (invoke "py.test" "src/geventhttpclient/tests" "-v"
1845 ;; Append the test modules to sys.path to avoid
1846 ;; namespace conflict which breaks SSL tests.
1847 "--import-mode=append")
12adfdf0 1848 #t)))))
1b2f753d
LC
1849 (native-inputs
1850 `(("python-pytest" ,python-pytest)))
1851 (propagated-inputs
1852 `(("python-certifi" ,python-certifi)
1853 ("python-gevent" ,python-gevent)
1854 ("python-six" ,python-six)))
1855 (home-page "https://github.com/gwik/geventhttpclient")
1856 (synopsis "HTTP client library for gevent")
1857 (description "@code{python-geventhttpclient} is a high performance,
1858concurrent HTTP client library for python using @code{gevent}.")
1859 (license license:expat)))
1860
1861(define-public python2-geventhttpclient
1862 (package-with-python2 python-geventhttpclient))
1863
1864(define-public python-requests-oauthlib
1865 (package
1866 (name "python-requests-oauthlib")
1867 (version "0.6.2")
1868 (source
1869 (origin
1870 (method url-fetch)
1871 (uri (pypi-uri "requests-oauthlib" version))
1872 (sha256
1873 (base32
1874 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
1875 (build-system python-build-system)
1876 (arguments
1877 `(#:phases
1878 (modify-phases %standard-phases
1879 ;; removes tests that require network access
1880 (add-before 'check 'pre-check
1881 (lambda _
1882 (delete-file "tests/test_core.py")
1883 #t)))))
1884 (native-inputs
1885 `(("python-requests-mock" ,python-requests-mock)
1886 ("python-mock" ,python-mock)))
1887 (propagated-inputs
1888 `(("python-oauthlib" ,python-oauthlib)
1889 ("python-requests" ,python-requests)))
1890 (home-page
1891 "https://github.com/requests/requests-oauthlib")
1892 (synopsis
1893 "OAuthlib authentication support for Requests")
1894 (description
1895 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
1896provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
1897 (license license:isc)))
1898
1899(define-public python2-requests-oauthlib
1900 (package-with-python2 python-requests-oauthlib))
1901
1902(define-public python-url
1903 (package
1904 (name "python-url")
1905 (version "0.2.0")
1906 (source (origin
1907 (method url-fetch)
1908 (uri (pypi-uri "url" version))
1909 (sha256
1910 (base32
1911 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
1912 (build-system python-build-system)
1913 (propagated-inputs
1914 `(("python-publicsuffix" ,python-publicsuffix)))
1915 (native-inputs
1916 `(("python-coverage" ,python-coverage)
1917 ("python-nose" ,python-nose)))
1918 (arguments
1919 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
1920 (home-page "https://github.com/seomoz/url-py")
1921 (synopsis "URL Parsing")
1922 (description "Library for parsing urls.")
1923 (license license:expat)
1924 (properties `((python2-variant . ,(delay python2-url))))))
1925
1926(define-public python2-url
1927 (let ((base (package-with-python2 (strip-python2-variant python-url))))
1928 (package (inherit base)
1929 (propagated-inputs
1930 `(("python2-publicsuffix" ,python2-publicsuffix))))))
1931
1932(define-public python-cachecontrol
1933 (package
1934 (name "python-cachecontrol")
1935 (version "0.11.6")
1936 (source
1937 (origin
1938 (method url-fetch)
1939 ;; Pypi does not have tests.
1940 (uri (string-append
1941 "https://github.com/ionrock/cachecontrol/archive/v"
1942 version ".tar.gz"))
1943 (file-name (string-append name "-" version ".tar.gz"))
1944 (sha256
1945 (base32
1946 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
1947 (build-system python-build-system)
1948 (arguments
1949 `(#:phases
1950 (modify-phases %standard-phases
1951 (replace 'check
1952 (lambda _
1953 ;; Drop test that requires internet access.
1954 (delete-file "tests/test_regressions.py")
1955 (setenv "PYTHONPATH"
1956 (string-append (getcwd) "/build/lib:"
1957 (getenv "PYTHONPATH")))
12adfdf0
TGR
1958 (invoke "py.test" "-vv")
1959 #t)))))
1b2f753d
LC
1960 (native-inputs
1961 `(("python-pytest" ,python-pytest)
1962 ("python-redis" ,python-redis)
1963 ("python-webtest" ,python-webtest)
1964 ("python-mock" ,python-mock)))
1965 (propagated-inputs
1966 `(("python-requests" ,python-requests)
1967 ("python-lockfile" ,python-lockfile)))
1968 (home-page "https://github.com/ionrock/cachecontrol")
1969 (synopsis "The httplib2 caching algorithms for use with requests")
1970 (description "CacheControl is a port of the caching algorithms in
1971@code{httplib2} for use with @code{requests} session objects.")
1972 (license license:asl2.0)))
1973
1974(define-public python2-cachecontrol
1975 (package-with-python2 python-cachecontrol))
1976
1977(define-public python-betamax
1978 (package
1979 (name "python-betamax")
98516883 1980 (version "0.8.1")
1b2f753d
LC
1981 (source
1982 (origin
1983 (method url-fetch)
1984 (uri (pypi-uri "betamax" version))
1985 (sha256
1986 (base32
98516883 1987 "1hki1c2vs7adq7zr56wi6i5bhrkia4s2ywpv2c98ibnczz709w2v"))))
1b2f753d
LC
1988 (build-system python-build-system)
1989 (arguments
1990 '(;; Many tests fail because they require networking.
1991 #:tests? #f))
1992 (propagated-inputs
1993 `(("python-requests" ,python-requests)))
1994 (home-page "https://github.com/sigmavirus24/betamax")
1995 (synopsis "Record HTTP interactions with python-requests")
1996 (description "Betamax will record your test suite's HTTP interactions and
1997replay them during future tests. It is designed to work with python-requests.")
1998 (license license:expat)))
1999
2000(define-public python2-betamax
2001 (package-with-python2 python-betamax))
2002
2003(define-public python-betamax-matchers
2004 (package
2005 (name "python-betamax-matchers")
2006 (version "0.4.0")
2007 (source
2008 (origin
2009 (method url-fetch)
2010 (uri (pypi-uri "betamax-matchers" version))
2011 (sha256
2012 (base32
2013 "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
2014 (build-system python-build-system)
2015 (propagated-inputs
2016 `(("python-betamax" ,python-betamax)
2017 ("python-requests-toolbelt" ,python-requests-toolbelt)))
2018 (home-page "https://github.com/sigmavirus24/betamax_matchers")
2019 (synopsis "VCR imitation for python-requests")
2020 (description "@code{betamax-matchers} provides a set of Matchers for
2021Betamax.")
2022 (license license:asl2.0)))
2023
2024(define-public python2-betamax-matchers
2025 (package-with-python2 python-betamax-matchers))
2026
2027(define-public python-s3transfer
2028 (package
2029 (name "python-s3transfer")
bda82eff 2030 (version "0.1.13")
1b2f753d
LC
2031 (source (origin
2032 (method url-fetch)
2033 (uri (pypi-uri "s3transfer" version))
2034 (sha256
2035 (base32
bda82eff 2036 "1harvyn1s8v54n1w5h7c0lg4bgjh68aylhg28s8n174q53h1ip4h"))))
1b2f753d
LC
2037 (build-system python-build-system)
2038 (arguments
2039 `(#:phases
2040 (modify-phases %standard-phases
2041 (replace 'check
2042 (lambda _
2043 ;; 7 of the 'integration' tests require network access or login
2044 ;; credentials.
12adfdf0
TGR
2045 (invoke "nosetests" "--exclude=integration")
2046 #t)))))
1b2f753d
LC
2047 (native-inputs
2048 `(("python-docutils" ,python-docutils)
2049 ("python-mock" ,python-mock)
2050 ("python-nose" ,python-nose)))
2051 (propagated-inputs
2052 `(("python-botocore" ,python-botocore)))
2053 (synopsis "Amazon S3 Transfer Manager")
2054 (description "S3transfer is a Python library for managing Amazon S3
2055transfers.")
2056 (home-page "https://github.com/boto/s3transfer")
2057 (license license:asl2.0)
2058 (properties `((python2-variant . ,(delay python2-s3transfer))))))
2059
2060(define-public python2-s3transfer
2061 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
2062 (package
2063 (inherit base)
2064 (native-inputs
2065 `(("python2-futures" ,python2-futures)
2066 ,@(package-native-inputs base))))))
2067
9c98d588
CB
2068(define-public python-slimit
2069 (package
2070 (name "python-slimit")
2071 (version "0.8.1")
2072 (source
2073 (origin
2074 (method url-fetch)
2075 (uri (pypi-uri "slimit" version ".zip"))
2076 (sha256
2077 (base32
2078 "02vj2x728rs1127q2nc27frrqra4fczivnb7gch6n5lzi7pxqczl"))))
2079 (build-system python-build-system)
2080 (native-inputs
2081 `(("unzip" ,unzip)))
2082 (propagated-inputs
2083 `(("python-ply" ,python-ply)))
2084 (home-page "https://slimit.readthedocs.io/")
2085 (synopsis "JavaScript minifier, parser and lexer written in Python")
2086 (description
2087 "SlimIt is a JavaScript minifier written in Python. It compiles
2088JavaScript into more compact code so that it downloads and runs faster.
2089SlimIt also provides a library that includes a JavaScript parser, lexer,
2090pretty printer and a tree visitor.")
2091 (license license:expat)))
2092
1b2f753d
LC
2093(define-public python-flask-restful
2094 (package
2095 (name "python-flask-restful")
4f8be6d9 2096 (version "0.3.7")
1b2f753d
LC
2097 (source
2098 (origin
2099 (method url-fetch)
2100 (uri (pypi-uri "Flask-RESTful" version))
2101 (sha256
4f8be6d9
EF
2102 (base32
2103 "1a9cbwkr6krryyzq4sd3f415nkkc6dyfls5i3pgyibs94g0hw97q"))))
1b2f753d
LC
2104 (build-system python-build-system)
2105 (propagated-inputs
2106 `(("python-aniso8601" ,python-aniso8601)
2107 ("python-flask" ,python-flask)
2108 ("python-pycrypto" ,python-pycrypto)
2109 ("python-pytz" ,python-pytz)))
2110 (native-inputs
2111 `(;; Optional dependency of Flask. Tests need it.
2112 ("python-blinker" ,python-blinker)
2113 ("python-mock" ,python-mock) ; For tests
2114 ("python-nose" ,python-nose) ; For tests
2115 ("python-sphinx" ,python-sphinx)))
2116 (home-page
2117 "https://www.github.com/flask-restful/flask-restful/")
2118 (synopsis
2119 "Flask module for creating REST APIs")
2120 (description
2121 "This package contains a Flask module for creating REST APIs.")
2122 (license license:bsd-3)))
2123
2124(define-public python-flask-basicauth
2125 (package
2126 (name "python-flask-basicauth")
2127 (version "0.2.0")
2128 (source
2129 (origin
2130 (method url-fetch)
2131 (uri (pypi-uri "Flask-BasicAuth" version))
2132 (sha256
2133 (base32
2134 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
2135 (build-system python-build-system)
2136 (propagated-inputs
2137 `(("python-flask" ,python-flask)))
2138 (home-page
2139 "https://github.com/jpvanhal/flask-basicauth")
2140 (synopsis
2141 "HTTP basic access authentication for Flask")
2142 (description
2143 "This package provides HTTP basic access authentication for Flask.")
2144 (license license:bsd-3)))
2145
2146(define-public python-flask-sqlalchemy
2147 (package
2148 (name "python-flask-sqlalchemy")
2149 (version "2.1")
2150 (source
2151 (origin
2152 (method url-fetch)
2153 (uri (pypi-uri "Flask-SQLAlchemy" version))
2154 (sha256
2155 (base32
2156 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
2157 (build-system python-build-system)
2158 (propagated-inputs
2159 `(("python-flask" ,python-flask)
2160 ("python-sqlalchemy" ,python-sqlalchemy)))
2161 (home-page
2162 "https://github.com/mitsuhiko/flask-sqlalchemy")
2163 (synopsis
2164 "Module adding SQLAlchemy support to your Flask application")
2165 (description
2166 "This package adds SQLAlchemy support to your Flask application.")
2167 (license license:bsd-3)))
2168
2169(define-public python-flask-restplus
2170 (package
2171 (name "python-flask-restplus")
2172 (version "0.9.2")
2173 (source
2174 (origin
2175 (method url-fetch)
2176 (uri (pypi-uri "flask-restplus" version))
2177 (sha256
2178 (base32
2179 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
2180 (build-system python-build-system)
2181 (arguments
2182 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
2183 ;; #:phases
2184 ;; (modify-phases %standard-phases
2185 ;; (replace 'check
2186 ;; (lambda _
12adfdf0
TGR
2187 ;; (invoke "nosetests")
2188 ;; #t)))))
1b2f753d
LC
2189 (propagated-inputs
2190 `(("python-aniso8601" ,python-aniso8601)
2191 ("python-flask" ,python-flask)
2192 ("python-jsonschema" ,python-jsonschema)
2193 ("python-pytz" ,python-pytz)
2194 ("python-six" ,python-six)))
2195 (native-inputs
2196 `(("python-tzlocal" ,python-tzlocal)
2197 ("python-blinker" ,python-blinker)
2198 ("python-nose" ,python-nose)
2199 ("python-rednose" ,python-rednose)))
2200 (home-page "https://github.com/noirbizarre/flask-restplus")
2201 (synopsis "Framework for documented API development with Flask")
2202 (description "This package provides a framework for API development with
2203the Flask web framework in Python. It is similar to package
2204@code{python-flask-restful} but supports the @code{python-swagger}
2205documentation builder.")
2206 (license license:expat)))
2207
2208(define-public python-flask-restful-swagger
2209 (package
2210 (name "python-flask-restful-swagger")
2211 (version "0.19")
2212 (source
2213 (origin
2214 (method url-fetch)
2215 (uri (pypi-uri "flask-restful-swagger" version))
2216 (sha256
2217 (base32
2218 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
2219 (build-system python-build-system)
2220 (propagated-inputs
2221 `(("python-flask-restful" ,python-flask-restful)))
2222 (home-page "https://github.com/rantav/flask-restful-swagger")
2223 (synopsis "Extract Swagger specs from Flask-Restful projects")
2224 (description "This package lets you extract Swagger API documentation
2225specs from your Flask-Restful projects.")
2226 (license license:expat)))
2227
2228(define-public python2-flask-restful-swagger
2229 (package-with-python2 python-flask-restful-swagger))
2230
2231(define-public python-htmlmin
2232 (package
2233 (name "python-htmlmin")
05075433 2234 (version "0.1.12")
1b2f753d
LC
2235 (source
2236 (origin
2237 (method url-fetch)
2238 (uri (pypi-uri "htmlmin" version))
2239 (sha256
2240 (base32
05075433 2241 "0y51xhabw6x8jk8k93xl8vznshpz3jb6l28075r5sjip613fzhah"))))
1b2f753d 2242 (arguments
05075433 2243 `(#:tests? #f)) ; no tests
1b2f753d
LC
2244 (build-system python-build-system)
2245 (home-page "https://htmlmin.readthedocs.org/en/latest/")
2246 (synopsis "HTML minifier")
2247 (description "@code{htmlmin} is an HTML minifier that just works.
2248It comes with safe defaults and easily configurable options.")
2249 (license license:bsd-3)))
2250
2251(define-public python2-htmlmin
2252 (package-with-python2 python-htmlmin))
2253
2254(define-public python-flask-htmlmin
2255 (package
2256 (name "python-flask-htmlmin")
2257 (version "1.2")
2258 (source
2259 (origin
2260 (method url-fetch)
2261 (uri (pypi-uri "Flask-HTMLmin" version))
2262 (sha256
2263 (base32
2264 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
2265 (propagated-inputs
2266 `(("python-flask" ,python-flask)
2267 ("python-htmlmin" ,python-htmlmin)))
2268 (build-system python-build-system)
2269 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
2270 (synopsis "HTML response minifier for Flask")
2271 (description
2272 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
2273 (license license:bsd-3)))
2274
2275(define-public python2-flask-htmlmin
2276 (package-with-python2 python-flask-htmlmin))
2277
90b9c5ad
CB
2278(define-public python-jsmin
2279 (package
2280 (name "python-jsmin")
2281 (version "2.2.2")
2282 (source
2283 (origin
2284 (method url-fetch)
2285 (uri (pypi-uri "jsmin" version))
2286 (sha256
2287 (base32
2288 "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn"))))
2289 (build-system python-build-system)
2290 (home-page "https://github.com/tikitu/jsmin/")
2291 (synopsis "Python JavaScript minifier")
2292 (description
2293 "@code{jsmin} is a JavaScript minifier, usable from both Python code and
2294on the command line.")
2295 (license license:expat)))
2296
1b2f753d
LC
2297(define-public python-flask-login
2298 (package
2299 (name "python-flask-login")
d6ab1d0a 2300 (version "0.4.1")
1b2f753d
LC
2301 (source
2302 (origin
79374801
TGR
2303 (method git-fetch)
2304 (uri (git-reference
2305 (url "https://github.com/maxcountryman/flask-login.git")
2306 (commit version)))
2307 (file-name (git-file-name name version))
1b2f753d 2308 (sha256
d6ab1d0a 2309 (base32 "1rj0qwyxapxnp84fi4lhmvh3d91fdiwz7hibw77x3d5i72knqaa9"))))
1b2f753d 2310 (arguments
d6ab1d0a
TGR
2311 `(#:phases
2312 (modify-phases %standard-phases
2313 (add-before 'check 'avoid-yanc
2314 ;; Work around '.nosetests-real: error: no such option: --with-yanc'.
2315 (lambda _
2316 (setenv "NOCOLOR" "set")
2317 #t)))))
1b2f753d 2318 (build-system python-build-system)
d6ab1d0a
TGR
2319 (propagated-inputs
2320 `(("python-flask" ,python-flask)))
2321 (native-inputs
2322 ;; For tests.
2323 `(("python-blinker" ,python-blinker)
2324 ("python-mock" ,python-mock)
2325 ("python-nose" ,python-nose)
2326 ("python-pep8" ,python-pep8)
2327 ("python-pyflakes" ,python-pyflakes)
2328 ("python-semantic-version" ,python-semantic-version)
2329 ("python-werkzeug" ,python-werkzeug)))
1b2f753d
LC
2330 (home-page "https://github.com/maxcountryman/flask-login")
2331 (synopsis "User session management for Flask")
2332 (description
2333 "@code{Flask-Login} provides user session management for Flask. It
2334handles the common tasks of logging in, logging out, and remembering your
2335users' sessions over extended periods of time.")
2336 (license license:expat)))
2337
2338(define-public python2-flask-login
2339 (package-with-python2 python-flask-login))
2340
2341(define-public python-oauth2client
2342 (package
2343 (name "python-oauth2client")
2344 (version "4.0.0")
2345 (source
2346 (origin
2347 (method url-fetch)
2348 (uri (pypi-uri "oauth2client" version))
2349 (sha256
2350 (base32
2351 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
2352 (build-system python-build-system)
2353 (arguments
2354 `(#:tests? #f))
2355 (propagated-inputs
2356 `(("python-httplib2" ,python-httplib2)
2357 ("python-pyasn1" ,python-pyasn1)
2358 ("python-pyasn1-modules" ,python-pyasn1-modules)
2359 ("python-rsa" ,python-rsa)
2360 ("python-six" ,python-six)))
9be5ecdf 2361 (home-page "https://github.com/google/oauth2client/")
1b2f753d
LC
2362 (synopsis "OAuth 2.0 client library")
2363 (description "@code{python-oauth2client} provides an OAuth 2.0 client
2364library for Python")
2365 (license license:asl2.0)))
2366
1ceca46b
MO
2367(define-public python2-oauth2client
2368 (package-with-python2 python-oauth2client))
2369
1b2f753d
LC
2370(define-public python-flask-oidc
2371 (package
2372 (name "python-flask-oidc")
2373 (version "1.1.1")
2374 (source
2375 (origin
2376 (method url-fetch)
2377 (uri (pypi-uri "flask-oidc" version))
2378 (sha256
2379 (base32
2380 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
2381 (build-system python-build-system)
2382 (propagated-inputs
2383 `(("python-flask" ,python-flask)
2384 ("python-itsdangerous" ,python-itsdangerous)
2385 ("python-oauth2client" ,python-oauth2client)
2386 ("python-six" ,python-six)))
2387 (native-inputs
2388 `(("python-nose" ,python-nose)
2389 ("python-mock" ,python-mock)))
2390 (home-page "https://github.com/puiterwijk/flask-oidc")
2391 (synopsis "OpenID Connect extension for Flask")
2392 (description "@code{python-flask-oidc} provides an OpenID Connect extension
2393for Flask.")
2394 (license license:bsd-2)))
2395
2396(define-public python-webassets
2397 (package
2398 (name "python-webassets")
2399 (version "0.12.1")
2400 (source
2401 (origin
2402 (method url-fetch)
2403 (uri (pypi-uri "webassets" version))
2404 (sha256
2405 (base32
2406 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
2407 (build-system python-build-system)
2408 (native-inputs
2409 `(("python-jinja2" ,python-jinja2)
2410 ("python-mock" ,python-mock)
2411 ("python-nose" ,python-nose)
2412 ("python-pytest" ,python-pytest)))
2413 (home-page "https://github.com/miracle2k/webassets")
2414 (synopsis "Media asset management")
2415 (description "Merges, minifies and compresses Javascript and CSS files,
2416supporting a variety of different filters, including YUI, jsmin, jspacker or
2417CSS tidy. Also supports URL rewriting in CSS files.")
2418 (license license:bsd-2)))
2419
2420(define-public python-cssmin
2421 (package
2422 (name "python-cssmin")
2423 (version "0.2.0")
2424 (source
2425 (origin
2426 (method url-fetch)
2427 (uri (pypi-uri "cssmin" version))
2428 (sha256
2429 (base32
2430 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
2431 (build-system python-build-system)
2432 (home-page "https://github.com/zacharyvoase/cssmin")
2433 (synopsis "Python port of the YUI CSS Compressor")
2434 (description "Python port of the YUI CSS Compressor.")
2435 (license (list license:expat license:bsd-3))))
2436
2437(define-public python2-cssmin
2438 (package-with-python2 python-cssmin))
2439
2440(define-public python-elasticsearch
2441 (package
2442 (name "python-elasticsearch")
aabcb6e5 2443 (version "6.1.1")
1b2f753d
LC
2444 (source
2445 (origin
2446 (method url-fetch)
2447 (uri (pypi-uri "elasticsearch" version))
2448 (sha256
2449 (base32
aabcb6e5 2450 "1kjxl45yvvgfb5fmamx0kfsfg9pzphiqrwbkns3s28r1w7ya74cd"))))
1b2f753d
LC
2451 (build-system python-build-system)
2452 (native-inputs
2453 `(("python-mock" ,python-mock)
2454 ("python-nosexcover" ,python-nosexcover)
2455 ("python-pyaml" ,python-pyaml)
2456 ("python-requests" ,python-requests)))
2457 (propagated-inputs
2458 `(("urllib3" ,python-urllib3)))
2459 (arguments
2460 ;; tests require the test_elasticsearch module but it is not distributed.
2461 `(#:tests? #f))
2462 (home-page "https://github.com/elastic/elasticsearch-py")
2463 (synopsis "Low-level client for Elasticsearch")
2464 (description "Official low-level client for Elasticsearch. Its goal is to
2465provide common ground for all Elasticsearch-related code in Python; because of
2466this it tries to be opinion-free and very extendable.")
2467 (license license:expat)))
2468
2469(define-public python2-elasticsearch
2470 (package-with-python2 python-elasticsearch))
2471
2472(define-public python-flask-script
2473 (package
2474 (name "python-flask-script")
6a192184 2475 (version "2.0.6")
1b2f753d
LC
2476 (source
2477 (origin
2478 (method url-fetch)
2479 (uri (pypi-uri "Flask-Script" version))
2480 (sha256
2481 (base32
6a192184 2482 "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4"))))
1b2f753d
LC
2483 (build-system python-build-system)
2484 (propagated-inputs
2485 `(("python-flask" ,python-flask)
2486 ("python-argcomplete" ,python-argcomplete)
2487 ("python-werkzeug" ,python-werkzeug)))
2488 (native-inputs
2489 `(("python-pytest" ,python-pytest)))
2490 (home-page
9be5ecdf 2491 "https://github.com/smurfix/flask-script")
1b2f753d
LC
2492 (synopsis "Scripting support for Flask")
2493 (description "The Flask-Script extension provides support for writing
2494external scripts in Flask. This includes running a development server,
2495a customised Python shell, scripts to set up your database, cronjobs,
2496and other command-line tasks that belong outside the web application
2497itself.")
2498 (license license:bsd-3)))
2499
2500(define-public python2-flask-script
2501 (package-with-python2 python-flask-script))
2502
2503(define-public python-flask-migrate
2504 (package
2505 (name "python-flask-migrate")
2506 (version "2.0.3")
2507 (source
2508 (origin
2509 (method url-fetch)
2510 (uri (pypi-uri "Flask-Migrate" version))
2511 (sha256
2512 (base32
2513 "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
2514 (build-system python-build-system)
2515 (propagated-inputs
2516 `(("python-flask" ,python-flask)
2517 ("python-alembic" ,python-alembic)
2518 ("python-sqlalchemy" ,python-sqlalchemy)
2519 ("python-flask-script" ,python-flask-script)
2520 ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
9be5ecdf 2521 (home-page "https://github.com/miguelgrinberg/flask-migrate/")
1b2f753d
LC
2522 (synopsis "SQLAlchemy database migrations for Flask programs using
2523Alembic")
2524 (description "This package contains SQLAlchemy database migration tools
2525for Flask programs that are using @code{python-alembic}.")
2526 (license license:expat)))
2527
2528(define-public python2-flask-migrate
2529 (package-with-python2 python-flask-migrate))
2530
2531(define-public python-genshi
2532 (package
2533 (name "python-genshi")
7c8b1bf6 2534 (version "0.7.1")
1b2f753d
LC
2535 (source
2536 (origin
7c8b1bf6
TGR
2537 (method git-fetch)
2538 (uri (git-reference
2539 (url "https://github.com/edgewall/genshi.git")
2540 (commit version)))
2541 (file-name (git-file-name name version))
1b2f753d 2542 (sha256
7c8b1bf6 2543 (base32 "01fx8fnpay5w048ppyjivg2dgfpp5rybn07y3pfsgj2knram3nhl"))))
1b2f753d
LC
2544 (build-system python-build-system)
2545 (home-page "https://genshi.edgewall.org/")
2546 (synopsis "Toolkit for generation of output for the web")
2547 (description "Genshi is a Python library that provides an integrated set
2548of components for parsing, generating, and processing HTML, XML or other
2549textual content for output generation on the web.")
2550 (license license:bsd-3)))
2551
1b2f753d
LC
2552(define-public python2-genshi
2553 (package-with-python2 python-genshi))
2554
2555(define-public python-flask-principal
2556 (package
2557 (name "python-flask-principal")
2558 (version "0.4.0")
2559 (source
2560 (origin
2561 (method url-fetch)
2562 (uri (pypi-uri "Flask-Principal" version))
2563 (sha256
2564 (base32
2565 "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
2566 (build-system python-build-system)
2567 (propagated-inputs
2568 `(("python-blinker" ,python-blinker)))
2569 (native-inputs
2570 `(("python-flask" ,python-flask)
2571 ("python-nose" ,python-nose)))
2572 (home-page "http://packages.python.org/Flask-Principal/")
2573 (synopsis "Identity management for Flask")
2574 (description "@code{flask_principal} is a identity management library for
2575Flask. It supports managing both authentication and authorization data in a
2576thread-local variable.")
2577 (license license:expat)))
2578
2579(define-public python2-flask-principal
2580 (package-with-python2 python-flask-principal))
2581
2582(define-public python-flask-httpauth
2583 (package
2584 (name "python-flask-httpauth")
2585 (version "3.2.3")
2586 (source
2587 (origin
2588 (method url-fetch)
2589 (uri (pypi-uri "Flask-HTTPAuth" version))
2590 (sha256
2591 (base32
2592 "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
2593 (build-system python-build-system)
2594 (native-inputs
2595 `(("python-flask" ,python-flask)))
9be5ecdf 2596 (home-page "https://github.com/miguelgrinberg/flask-httpauth/")
1b2f753d
LC
2597 (synopsis "Basic and Digest HTTP authentication for Flask routes")
2598 (description "@code{flask_httpauth} provides Basic and Digest HTTP
2599authentication for Flask routes.")
2600 (license license:expat)))
2601
2602(define-public python2-flask-httpauth
2603 (package-with-python2 python-flask-httpauth))
2604
2605(define-public python-uritemplate
2606 (package
2607 (name "python-uritemplate")
2608 (version "3.0.0")
2609 (source
2610 (origin
2611 (method url-fetch)
2612 (uri (pypi-uri "uritemplate" version))
2613 (sha256
2614 (base32
2615 "0781gm9g34wa0asc19dx81ng0nqq07igzv3bbvdqmz13pv7469n0"))))
2616 (build-system python-build-system)
2617 (home-page "https://uritemplate.readthedocs.org")
2618 (synopsis "Library to deal with URI Templates")
2619 (description "@code{uritemplate} provides Python library to deal with URI
2620Templates.")
2621 (license license:bsd-2)))
2622
2623(define-public python2-uritemplate
2624 (package-with-python2 python-uritemplate))
2625
589e3f4e
LC
2626(define-public python-publicsuffix
2627 (package
2628 (name "python-publicsuffix")
2629 (version "1.1.0")
2630 (source (origin
2631 (method url-fetch)
2632 (uri (pypi-uri "publicsuffix" version))
2633 (sha256
2634 (base32
2635 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
2636 (build-system python-build-system)
2637 (arguments
2638 `(#:tests? #f)) ; tests use the internet
2639 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
2640 (synopsis "Get suffix for a domain name")
2641 (description "Get a public suffix for a domain name using the Public Suffix
2642List.")
2643 (license license:expat)))
2644
2645(define-public python2-publicsuffix
2646 (package-with-python2 python-publicsuffix))
2647
2648(define-public python-publicsuffix2
2649 (package
2650 (name "python-publicsuffix2")
2651 (version "2.20160818")
2652 (source
2653 (origin
2654 (method url-fetch)
2655 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
2656 (sha256
2657 (base32
2658 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
2659 (build-system python-build-system)
2660 (arguments
2661 '(#:tests? #f)) ; The test suite requires network access.
2662 (home-page "https://github.com/pombredanne/python-publicsuffix2")
2663 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
2664 (description "Get a public suffix for a domain name using the Public Suffix
2665List. Forked from and using the same API as the publicsuffix package.")
2666 (license (list license:expat license:mpl2.0))))
2667
2668(define-public python2-publicsuffix2
2669 (package-with-python2 python-publicsuffix2))
98c6a025
RW
2670
2671(define-public python-werkzeug
2672 (package
2673 (name "python-werkzeug")
c5e110ce 2674 (version "0.14.1")
98c6a025
RW
2675 (source
2676 (origin
2677 (method url-fetch)
c5e110ce 2678 (uri (pypi-uri "werkzeug" version))
98c6a025
RW
2679 (sha256
2680 (base32
c5e110ce 2681 "0z2m4snn1vc9518r2vzgdj1nc90kcgi60wijvd29yvcp85ypmzf3"))))
98c6a025 2682 (build-system python-build-system)
c5e110ce
EF
2683 (arguments
2684 '(#:phases
2685 (modify-phases %standard-phases
2686 (delete 'check)
2687 (add-after 'install 'check
2688 (lambda* (#:key inputs outputs #:allow-other-keys)
2689 (add-installed-pythonpath inputs outputs)
2690 (invoke "python" "-m" "pytest"))))))
2691 (propagated-inputs
2692 `(("python-requests" ,python-requests)))
98c6a025
RW
2693 (native-inputs
2694 `(("python-pytest" ,python-pytest)))
c5e110ce 2695 (home-page "https://www.palletsprojects.org/p/werkzeug/")
98c6a025
RW
2696 (synopsis "Utilities for WSGI applications")
2697 (description "One of the most advanced WSGI utility modules. It includes a
2698powerful debugger, full-featured request and response objects, HTTP utilities to
2699handle entity tags, cache control headers, HTTP dates, cookie handling, file
2700uploads, a powerful URL routing system and a bunch of community-contributed
2701addon modules.")
2702 (license license:x11)))
2703
2704(define-public python2-werkzeug
2705 (package-with-python2 python-werkzeug))
2706
2707(define-public python-bottle
2708 (package
2709 (name "python-bottle")
2710 (version "0.12.13")
2711 (source
2712 (origin
2713 (method url-fetch)
2714 (uri (pypi-uri "bottle" version))
2715 (sha256
2716 (base32
2717 "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
2718 (build-system python-build-system)
2719 (home-page "http://bottlepy.org/")
2720 (synopsis "WSGI framework for small web-applications.")
2721 (description "@code{python-bottle} is a WSGI framework for small web-applications.")
2722 (license license:expat)))
2723
2724(define-public python2-bottle
2725 (package-with-python2 python-bottle))
2726
2727(define-public python-wtforms
2728 (package
2729 (name "python-wtforms")
2730 (version "2.1")
2731 (source
2732 (origin
2733 (method url-fetch)
2734 (uri (pypi-uri "WTForms" version ".zip"))
2735 (sha256
2736 (base32
2737 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
2738 (build-system python-build-system)
2739 (arguments
2740 '(#:phases
2741 (modify-phases %standard-phases
2742 (add-after 'unpack 'remove-django-test
2743 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
2744 (lambda _
2745 (substitute*
2746 "tests/runtests.py"
2747 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
2748 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
2749 #t)))))
2750 (native-inputs
2751 `(("unzip" ,unzip)))
2752 (home-page "http://wtforms.simplecodes.com/")
2753 (synopsis
2754 "Form validation and rendering library for Python web development")
2755 (description
2756 "WTForms is a flexible forms validation and rendering library
2757for Python web development. It is very similar to the web form API
2758available in Django, but is a standalone package.")
2759 (license license:bsd-3)))
2760
2761(define-public python2-wtforms
2762 (package-with-python2 python-wtforms))
2763
2764(define-public python-paste
2765 (package
2766 (name "python-paste")
ce50403f 2767 (version "3.0.6")
98c6a025
RW
2768 (source
2769 (origin
2770 (method url-fetch)
2771 (uri (pypi-uri "Paste" version))
2772 (sha256
2773 (base32
ce50403f 2774 "14lbi9asn5agsdf7r97prkjpz7amgmp529lbvfhf0nv881xczah6"))
95176544
EF
2775 (patches (search-patches "python-paste-remove-timing-test.patch"))
2776 (modules '((guix build utils)))
2777 (snippet
2778 '(begin
2779 ;; This test calls out to the internet.
2780 (delete-file "tests/test_proxy.py") #t))))
98c6a025
RW
2781 (build-system python-build-system)
2782 (native-inputs
95176544
EF
2783 `(("python-pytest" ,python-pytest)
2784 ("python-pytest-runner" ,python-pytest-runner)
2785 ("python-nose" ,python-nose)))
98c6a025
RW
2786 (propagated-inputs
2787 `(("python-six" ,python-six)))
2788 (home-page "http://pythonpaste.org")
2789 (synopsis
2790 "Python web development tools, focusing on WSGI")
2791 (description
2792 "Paste provides a variety of web development tools and middleware which
2793can be nested together to build web applications. Paste's design closely
2794follows ideas flowing from WSGI (Web Standard Gateway Interface).")
2795 (license license:expat)))
2796
2797(define-public python2-paste
2798 (package-with-python2 python-paste))
2799
2800(define-public python-pastescript
2801 (package
2802 (name "python-pastescript")
2803 (version "2.0.2")
2804 (source
2805 (origin
2806 (method url-fetch)
2807 (uri (pypi-uri "PasteScript" version))
2808 (sha256
2809 (base32
2810 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
2811 (build-system python-build-system)
2812 (native-inputs
2813 `(("python-nose" ,python-nose)))
2814 (propagated-inputs
2815 `(("python-paste" ,python-paste)
2816 ("python-pastedeploy" ,python-pastedeploy)))
2817 (home-page "http://pythonpaste.org/script/")
2818 (arguments
2819 '(;; Unfortunately, this requires the latest unittest2,
2820 ;; but that requires traceback2 which requires linecache2 which requires
2821 ;; unittest2. So we're skipping tests for now.
2822 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
2823 ;; so in theory we could get around this situation somehow.)
2824 #:tests? #f))
2825 (synopsis
2826 "Pluggable command line tool for serving web applications and more")
2827 (description
2828 "PasteScript is a plugin-friendly command line tool which provides a
2829variety of features, from launching web applications to bootstrapping project
2830layouts.")
2831 (license license:expat)))
2832
2833(define-public python2-pastescript
2834 (package-with-python2 python-pastescript))
c5964611
2835
2836(define-public python2-urlgrabber
2837 (package
2838 (name "python2-urlgrabber")
2839 (version "3.10.2")
2840 (source
2841 (origin
2842 (method url-fetch)
2843 (uri (pypi-uri "urlgrabber" version))
2844 (sha256
2845 (base32 "0w1h7hlsq406bxfy2pn4i9bd003bwl0q9b7p03z3g6yl0d21ddq5"))))
2846 (build-system python-build-system)
2847 (arguments `(#:python ,python-2)) ; urlgrabber supports python2 only
2848 (home-page "http://urlgrabber.baseurl.org")
2849 (synopsis "High-level cross protocol url-grabber")
2850 (description "@code{urlgrabber} is Python2 library that unifies access to
2851files available on web, FTP or locally. It supports HTTP, FTP and file://
2852protocols, it supports features like HTTP keep-alive, reget, throttling and
2853more.")
2854 (license license:lgpl2.1+)))
2855
85ccc0c2
NG
2856(define-public python-pycares
2857 (package
2858 (name "python-pycares")
2859 (version "2.3.0")
2860 (source
2861 (origin
2862 (method url-fetch)
2863 (uri (pypi-uri "pycares" version))
2864 (sha256
2865 (base32
2866 "0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n"))))
2867 (build-system python-build-system)
2868 (arguments
2869 `(#:tests? #f)) ;tests require internet access
2870 (home-page "http://github.com/saghul/pycares")
2871 (synopsis "Python interface for @code{c-ares}")
2872 (description "@code{pycares} is a Python module which provides an
2873interface to @code{c-ares}, a C library that performs DNS requests and
2874name resolutions asynchronously.")
2875 (license license:expat)))
2eccb414
NG
2876
2877(define-public python-yarl
2878 (package
2879 (name "python-yarl")
2880 (version "1.1.1")
2881 (source
2882 (origin
2883 (method url-fetch)
2884 (uri (pypi-uri "yarl" version))
2885 (sha256
2886 (base32
2887 "1s6z13g8vgxfkkqwhn6imnm7pl7ky9arv4jygnn6bcndcbidg7d6"))))
2888 (build-system python-build-system)
2889 (native-inputs
2890 `(("python-pytest" ,python-pytest)
2891 ("python-pytest-runner" ,python-pytest-runner)))
2892 (propagated-inputs
2893 `(("python-idna" ,python-idna)
2894 ("python-multidict" ,python-multidict)))
2895 (home-page "https://github.com/aio-libs/yarl/")
2896 (synopsis "Yet another URL library")
2897 (description "@code{yarl} module provides handy @code{URL} class
2898for URL parsing and changing.")
2899 (license license:asl2.0)))
961bcdf5
MO
2900
2901(define-public python-google-api-client
2902 (package
2903 (name "python-google-api-client")
2904 (version "1.6.7")
2905 (source
2906 (origin
2907 (method url-fetch)
2908 (uri (pypi-uri "google-api-python-client" version))
2909 (sha256
2910 (base32
2911 "1wpbbbxfpy9mwxdy3kn352cb590ladv574j1aa2l4grjdqw3ln05"))))
2912 (build-system python-build-system)
2913 (arguments
2914 '(#:tests? #f)) ; tests require internet access
2915 (native-inputs
2916 `(("python-httplib2" ,python-httplib2)
2917 ("python-six" ,python-six)
2918 ("python-oauth2client" ,python-oauth2client)
2919 ("python-uritemplate" ,python-uritemplate)))
2920 (home-page "https://github.com/google/google-api-python-client")
2921 (synopsis "Core Python library for accessing Google APIs")
2922 (description "Python client library for Google's discovery based APIs")
2923 (license license:asl2.0)))
2924
2925(define-public python2-google-api-client
2926 (package-with-python2 python-google-api-client))
0750f344
RW
2927
2928(define-public python-hawkauthlib
2929 (package
2930 (name "python-hawkauthlib")
2931 (version "2.0.0")
2932 (source
2933 (origin
2934 (method url-fetch)
2935 (uri (pypi-uri "hawkauthlib" version))
2936 (sha256
2937 (base32
2938 "03ai47s4h8nfnrf25shbfvkm1b9n1ccd4nmmj280sg1fayi69zgg"))))
2939 (build-system python-build-system)
2940 (propagated-inputs
2941 `(("python-requests" ,python-requests)
2942 ("python-webob" ,python-webob)))
2943 (home-page "https://github.com/mozilla-services/hawkauthlib")
2944 (synopsis "Hawk Access Authentication protocol")
2945 (description
2946 "This is a low-level Python library for implementing Hawk Access Authentication,
2947a simple HTTP request-signing scheme.")
2948 (license license:mpl2.0)))
084e14cc
RW
2949
2950(define-public python-pybrowserid
2951 (package
2952 (name "python-pybrowserid")
2953 (version "0.14.0")
2954 (source
2955 (origin
2956 (method url-fetch)
2957 (uri (pypi-uri "PyBrowserID" version))
2958 (sha256
2959 (base32
2960 "1qvi79kfb8x9kxkm5lw2mp42hm82cpps1xknmsb5ghkwx1lpc8kc"))))
2961 (build-system python-build-system)
2962 (propagated-inputs
2963 `(("python-requests" ,python-requests)))
2964 (native-inputs
2965 `(("python-mock" ,python-mock)))
2966 (home-page "https://github.com/mozilla/PyBrowserID")
2967 (synopsis "Python library for the BrowserID protocol")
2968 (description
2969 "This is a Python client library for the BrowserID protocol that
2970underlies Mozilla Persona.")
2971 (license license:mpl2.0)))
f45bb3cc
RW
2972
2973(define-public python-pyfxa
2974 (package
2975 (name "python-pyfxa")
2976 (version "0.6.0")
2977 (source
2978 (origin
2979 (method url-fetch)
2980 (uri (pypi-uri "PyFxA" version))
2981 (sha256
2982 (base32
2983 "0axl16fyrz2r88gnw4b12mk7dpkqscv8c4wsc1y5hicl7bsbc4fm"))))
2984 (build-system python-build-system)
2985 (arguments '(#:tests? #f)) ; 17 tests require network access
2986 (propagated-inputs
2987 `(("python-cryptography" ,python-cryptography)
2988 ("python-hawkauthlib" ,python-hawkauthlib)
2989 ("python-pybrowserid" ,python-pybrowserid)
2990 ("python-requests" ,python-requests)
2991 ("python-six" ,python-six)))
2992 (native-inputs
2993 `(("python-grequests" ,python-grequests)
2994 ("python-mock" ,python-mock)
2995 ("python-responses" ,python-responses)
2996 ("python-unittest2" ,python-unittest2)))
2997 (home-page "https://github.com/mozilla/PyFxA")
2998 (synopsis "Firefox Accounts client library for Python")
2999 (description
3000 "This is a Python library for interacting with the Firefox Accounts
3001ecosystem.")
3002 (license license:mpl2.0)))
68460fbb
LF
3003
3004(define-public python-hyperlink
3005 (package
3006 (name "python-hyperlink")
431a0d26 3007 (version "19.0.0")
68460fbb
LF
3008 (source
3009 (origin
3010 (method url-fetch)
3011 (uri (pypi-uri "hyperlink" version))
3012 (sha256
3013 (base32
431a0d26 3014 "0m2nhi0j8wmgfscf974wd5v1xfq8mah286hil6npy1ys0m3y7222"))))
68460fbb
LF
3015 (build-system python-build-system)
3016 (propagated-inputs
3017 `(("python-idna" ,python-idna)))
3018 (home-page "https://github.com/python-hyper/hyperlink")
3019 (synopsis "Python module to create immutable URLs according to spec")
3020 (description "This package provides a Python module to create immutable, and
3021correct URLs for Python according to RFCs 3986 and 3987.")
3022 (license license:expat)))
00adbac6
LF
3023
3024(define-public python-treq
3025 (package
3026 (name "python-treq")
3027 (version "18.6.0")
3028 (source
3029 (origin
3030 (method url-fetch)
3031 (uri (pypi-uri "treq" version))
3032 (sha256
3033 (base32
3034 "0j4zwq9p1c9piv1vc66nxcv9s6hdinf90jwkbsm91k14npv9zq4i"))))
3035 (build-system python-build-system)
3036 (propagated-inputs
3037 `(("python-attrs" ,python-attrs)
3038 ("python-idna" ,python-idna)
3039 ("python-incremental" ,python-incremental)
3040 ("python-requests" ,python-requests)
3041 ("python-service-identity" ,python-service-identity)
3042 ("python-twisted" ,python-twisted)))
3043 (home-page "https://github.com/twisted/treq")
3044 (synopsis "Requests-like API built on top of twisted.web's Agent")
3045 (description "This package provides an HTTP library inspired by
3046@code{requests}} but written on top of Twisted's @code{Agents}. It offers a
3047high level API for making HTTP requests when using Twisted.")
3048 (license license:expat)))
951c7093
LF
3049
3050(define-public python-autobahn
3051 (package
3052 (name "python-autobahn")
3053 (version "19.2.1")
3054 (source
3055 (origin
3056 (method url-fetch)
3057 (uri (pypi-uri "autobahn" version))
3058 (sha256
3059 (base32
3060 "1mm7j24ls01c7jb1ad5p5cpyxvzgydiyf8b04ihykh2v8g98j0x7"))))
3061 (build-system python-build-system)
3062 (arguments
3063 ;; The tests fail to run:
3064 ;; https://github.com/crossbario/autobahn-python/issues/1117
3065 `(#:tests? #f))
3066 (propagated-inputs
3067 `(("python-cffi" ,python-cffi)
3068 ("python-twisted" ,python-twisted)
3069 ("python-txaio" ,python-txaio)))
3070 (home-page "https://crossbar.io/autobahn/")
3071 (synopsis "Web Application Messaging Protocol implementation")
3072 (description "This package provides an implementation of the @dfn{Web Application
3073Messaging Protocol} (WAMP). WAMP connects components in distributed
3074applications using Publish and Subscribe (PubSub) and routed Remote Procedure
3075Calls (rRPC). It is ideal for distributed, multi-client and server applications
3076such as IoT applications or multi-user database-driven business applications.")
3077 (license license:expat)))
526b1efb
RW
3078
3079(define-public python-ws4py
3080 (package
3081 (name "python-ws4py")
3082 (version "0.5.1")
3083 (source
3084 (origin
3085 (method url-fetch)
3086 (uri (pypi-uri "ws4py" version))
3087 (sha256
3088 (base32
3089 "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19"))))
3090 (build-system python-build-system)
3091 (arguments
3092 `(#:phases
3093 (modify-phases %standard-phases
3094 (add-after 'unpack 'python3.7-compatibility
3095 (lambda _
3096 (substitute* '("ws4py/server/tulipserver.py"
3097 "ws4py/async_websocket.py")
3098 (("asyncio.async")
3099 "asyncio.ensure_future"))
3100 #t))
3101 ;; We don't have a package for cherrypy.
3102 (add-after 'unpack 'remove-cherrypy-support
3103 (lambda _
3104 (delete-file "ws4py/server/cherrypyserver.py")
3105 #t)))))
3106 (propagated-inputs
3107 `(("python-gevent" ,python-gevent)
3108 ("python-tornado" ,python-tornado)))
3109 (home-page "https://github.com/Lawouach/WebSocket-for-Python")
3110 (synopsis "WebSocket client and server library")
3111 (description
3112 "This package provides a WebSocket client and server library for
3113Python.")
3114 (license license:bsd-3)))
57e4592f
RW
3115
3116;; kaldi-gstreamer-server does not yet work with python-ws4py > 0.3.2
3117(define-public python2-ws4py-for-kaldi-gstreamer-server
3118 (package (inherit python-ws4py)
3119 (name "python2-ws4py")
3120 (version "0.3.2")
3121 (source
3122 (origin
3123 (method url-fetch)
3124 (uri (pypi-uri "ws4py" version))
3125 (sha256
3126 (base32
3127 "12ys3dv98awhrxd570vla3hqgzq3avjhq4yafhghhq3a942y1928"))))
3128 (build-system python-build-system)
3129 (arguments
3130 `(#:python ,python-2
3131 #:phases
3132 (modify-phases %standard-phases
3133 ;; We don't have a package for cherrypy.
3134 (add-after 'unpack 'remove-cherrypy-support
3135 (lambda _
3136 (delete-file "ws4py/server/cherrypyserver.py")
3137 #t)))))
3138 (propagated-inputs
3139 `(("python-gevent" ,python2-gevent)
3140 ("python-tornado" ,python2-tornado)))))