gnu: python-sockjs-tornado: Update to 1.0.5.
[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>
3;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
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>
8;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
9;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
10;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
4a78fd46 11;;; Copyright © 2016, 2017 Nils Gillmann <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>
15;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
16;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
331ebb7f 17;;; Copyright © 2016, 2017, 2018 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>
1b2f753d
LC
29;;;
30;;; This file is part of GNU Guix.
31;;;
32;;; GNU Guix is free software; you can redistribute it and/or modify it
33;;; under the terms of the GNU General Public License as published by
34;;; the Free Software Foundation; either version 3 of the License, or (at
35;;; your option) any later version.
36;;;
37;;; GNU Guix is distributed in the hope that it will be useful, but
38;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40;;; GNU General Public License for more details.
41;;;
42;;; You should have received a copy of the GNU General Public License
43;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
44
45(define-module (gnu packages python-web)
46 #:use-module (guix packages)
47 #:use-module (guix download)
48 #:use-module (guix build-system python)
e3e74e40 49 #:use-module (guix utils)
1b2f753d 50 #:use-module (gnu packages)
ac257f12 51 #:use-module (gnu packages check)
1b2f753d 52 #:use-module (gnu packages compression)
eaa8292e 53 #:use-module (gnu packages curl)
a8714bf6 54 #:use-module (gnu packages databases)
1b2f753d
LC
55 #:use-module (gnu packages django)
56 #:use-module (gnu packages pkg-config)
57 #:use-module (gnu packages python)
cc6f4912 58 #:use-module (gnu packages python-crypto)
eaa8292e 59 #:use-module (gnu packages tls)
33dc54b0 60 #:use-module (gnu packages time)
1b2f753d
LC
61 #:use-module (gnu packages xml)
62 #:use-module ((guix licenses) #:prefix license:)
63 #:use-module (srfi srfi-1))
64
321ba568
NG
65(define-public python-aiohttp
66 (package
67 (name "python-aiohttp")
68 (version "3.1.3")
69 (source
70 (origin
71 (method url-fetch)
72 (uri (pypi-uri "aiohttp" version))
73 (sha256
74 (base32
75 "1b888lggmyf2d08rfayq9khszzc0pav1z70ssc0b4d9kkr4g1klz"))))
76 (build-system python-build-system)
77 (arguments
78 `(#:tests? #f)) ;FIXME: 2 errors, 2084 passed
79 (native-inputs
80 `(("python-async-generator" ,python-async-generator)
81 ("python-pytest" ,python-pytest)
82 ("python-pytest-capturelog" ,python-pytest-capturelog)
83 ("python-pytest-mock" ,python-pytest-mock)))
84 (propagated-inputs
85 `(("python-aiodns" ,python-aiodns)
86 ("python-async-timeout" ,python-async-timeout)
87 ("python-attrs" ,python-attrs)
88 ("python-chardet" ,python-chardet)
89 ("python-idna-ssl" ,python-idna-ssl)
90 ("python-multidict" ,python-multidict)
91 ("python-yarl" ,python-yarl)))
92 (home-page "https://github.com/aio-libs/aiohttp/")
93 (synopsis "Async HTTP client/server framework (asyncio)")
94 (description "@code{aiohttp} is an asynchronous HTTP client/server
95framework.
96
97Its main features are:
98@itemize
99@item Supports both client and server side of HTTP protocol.
100@item Supports both client and server Web-Sockets out-of-the-box without the
101Callback Hell.
102@item Web-server has middlewares and pluggable routing.
103@end itemize")
104 (license license:asl2.0)))
105
f90f4c9c
NG
106(define-public python-aiodns
107 (package
108 (name "python-aiodns")
109 (version "1.1.1")
110 (source
111 (origin
112 (method url-fetch)
113 (uri (pypi-uri "aiodns" version))
114 (sha256
115 (base32
116 "1snr5paql8dgvc676n8xq460wypjsb1xj53cf3px1s4wczf7lryq"))))
117 (build-system python-build-system)
118 (inputs
119 `(("python-pycares" ,python-pycares)))
120 (arguments
121 `(#:tests? #f)) ;tests require internet access
122 (home-page "http://github.com/saghul/aiodns")
123 (synopsis "Simple DNS resolver for asyncio")
124 (description "@code{aiodns} provides a simple way for doing
125asynchronous DNS resolutions with a synchronous looking interface by
126using @url{https://github.com/saghul/pycares,pycares}.")
127 (license license:expat)))
128
589e3f4e
LC
129(define-public python-furl
130 (package
131 (name "python-furl")
132 (version "0.5.6")
133 (source
134 (origin
135 (method url-fetch)
136 (uri (pypi-uri "furl" version))
137 (sha256
138 (base32
139 "0lzpfpm686hvz3sr1mcrnd1b3lgmnw8v59gb43wfi98r3b671pqc"))))
140 (build-system python-build-system)
141 (propagated-inputs
142 `(("python-six" ,python-six)
143 ("python-orderedmultidict" ,python-orderedmultidict)))
144 (native-inputs
145 `(("python-pycodestyle" ,python-pycodestyle)))
146 (home-page "https://github.com/gruns/furl")
147 (synopsis "URL manipulation in Python")
148 (description "Furl provides an easy-to-use alternative to the
149@code{urllib} and @code{urlparse} modules for manipulating URLs.")
150 (license license:unlicense)))
151
152(define-public python2-furl
153 (package-with-python2 python-furl))
154
1b2f753d
LC
155(define-public python-httplib2
156 (package
157 (name "python-httplib2")
158 (version "0.9.2")
159 (source
160 (origin
161 (method url-fetch)
162 (uri (pypi-uri "httplib2" version))
163 (sha256
164 (base32
165 "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
166 (build-system python-build-system)
167 (home-page "https://github.com/jcgregorio/httplib2")
168 (synopsis "Comprehensive HTTP client library")
169 (description
170 "A comprehensive HTTP client library supporting many features left out of
171other HTTP libraries.")
172 (license license:expat)))
173
174(define-public python2-httplib2
175 (package-with-python2 python-httplib2))
176
177(define-public python-sockjs-tornado
178 (package
179 (name "python-sockjs-tornado")
83397e07 180 (version "1.0.5")
1b2f753d
LC
181 (source
182 (origin
183 (method url-fetch)
184 (uri (pypi-uri "sockjs-tornado" version))
185 (sha256
186 (base32
83397e07 187 "0zhq8wnnhkfbvdnsggqrc3pp97pqpilsf7fh6ymvnf52r0rwyjsc"))))
1b2f753d
LC
188 (build-system python-build-system)
189 (arguments
190 `(;; There are no tests, and running the test phase requires missing
191 ;; dependencies
192 #:tests? #f))
193 (propagated-inputs
194 `(("python-tornado" ,python-tornado)))
9be5ecdf 195 (home-page "https://github.com/mrjoes/sockjs-tornado/")
1b2f753d 196 (synopsis
1f7fe26f 197 "SockJS Python server implementation on top of the Tornado framework")
1b2f753d 198 (description
1f7fe26f 199 "SockJS-tornado provides the server-side counterpart to a SockJS client
1b2f753d
LC
200library, through the Tornado framework.
201
1f7fe26f 202SockJS provides a low-latency, full-duplex, cross-domain communication channel
1b2f753d
LC
203between a web browser and web server.")
204 (license license:expat)))
205
206(define-public python2-sockjs-tornado
207 (package-with-python2 python-sockjs-tornado))
208
209(define-public python-flask-babel
210 (package
211 (name "python-flask-babel")
1a6fb8da 212 (version "0.11.2")
1b2f753d
LC
213 (source
214 (origin
215 (method url-fetch)
216 (uri (pypi-uri "Flask-Babel" version))
217 (sha256
218 (base32
1a6fb8da 219 "0ff9n165vhf1nhv6807ckhpp224jw7k7sd7jz5kfh3sbpl85gmy0"))))
1b2f753d
LC
220 (build-system python-build-system)
221 (propagated-inputs
222 `(("python-flask" ,python-flask)
223 ("python-babel" ,python-babel)
224 ("python-jinja2" ,python-jinja2)
225 ("python-pytz" ,python-pytz)))
226 (home-page "https://github.com/python-babel/flask-babel")
227 (synopsis "Add i18n/l10n support to Flask applications")
228 (description "This package implements internationalization and localization
229support for Flask. This is based on the Python babel module as well as pytz -
230both of which are installed automatically if you install this library.")
231 (license license:bsd-3)))
232
233(define-public python2-flask-babel
234 (package-with-python2 python-flask-babel))
235
236(define-public python-html5lib
237 (package
238 (name "python-html5lib")
4ef80b2f 239 (version "1.0.1")
1b2f753d
LC
240 (source
241 (origin
242 (method url-fetch)
243 (uri (pypi-uri "html5lib" version))
244 (sha256
245 (base32
4ef80b2f 246 "0dipzfrycv6j1jw82v9b7d8lzggx3x8xngx6l4xrqkxwvg7hvjv6"))))
1b2f753d
LC
247 (build-system python-build-system)
248 (propagated-inputs
249 `(("python-six" ,python-six)
250 ("python-webencodings" ,python-webencodings)))
251 (arguments
252 `(#:test-target "check"))
253 (home-page
254 "https://github.com/html5lib/html5lib-python")
255 (synopsis
256 "Python HTML parser based on the WHATWG HTML specifcation")
257 (description
258 "Html5lib is an HTML parser based on the WHATWG HTML specifcation
259and written in Python.")
260 (license license:expat)))
261
262(define-public python2-html5lib
263 (package-with-python2 python-html5lib))
264
265;; Needed for python-bleach, a dependency of python-notebook
266(define-public python-html5lib-0.9
267 (package
268 (inherit python-html5lib)
269 (version "0.999")
270 (source
271 (origin
272 (method url-fetch)
273 (uri (pypi-uri "html5lib" version))
274 (sha256
275 (base32
276 "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
277
278(define-public python2-html5lib-0.9
279 (package-with-python2 python-html5lib-0.9))
280
281(define-public python-html5-parser
282 (package
283 (name "python-html5-parser")
5e517e9b 284 (version "0.4.5")
1b2f753d
LC
285 (source (origin
286 (method url-fetch)
287 (uri (pypi-uri "html5-parser" version))
288 (sha256
289 (base32
5e517e9b 290 "01mx33sx4dhl4kj6wc48nj6jz7ry60rkhjv0s6k8h5xmjf5yy0x9"))))
1b2f753d
LC
291 (build-system python-build-system)
292 (native-inputs
293 `(("pkg-config" ,pkg-config)))
294 (inputs
295 `(("libxml2" ,libxml2)))
296 (propagated-inputs
297 `(("python-lxml" ,python-lxml)
298 ("python-beautifulsoup4" ,python-beautifulsoup4)))
299 (home-page "https://html5-parser.readthedocs.io")
300 (synopsis "Fast C-based HTML5 parsing for Python")
301 (description "This package provides a fast implementation of the HTML5
302parsing spec for Python. Parsing is done in C using a variant of the gumbo
303parser. The gumbo parse tree is then transformed into an lxml tree, also in
304C, yielding parse times that can be a thirtieth of the html5lib parse times.")
305 ;; src/as-python-tree.[c|h] are licensed GPL3. The other files
306 ;; indicate ASL2.0, including the LICENSE file for the whole project.
307 (license (list license:asl2.0 license:gpl3))))
308
309(define-public python2-html5-parser
310 (package-with-python2 python-html5-parser))
311
eaa8292e
MM
312(define-public python-pycurl
313 (package
314 (name "python-pycurl")
0d35a954 315 (version "7.43.0.2")
eaa8292e
MM
316 (source
317 (origin
318 (method url-fetch)
319 (uri (string-append "https://dl.bintray.com/pycurl/pycurl/pycurl-"
320 version ".tar.gz"))
321 (sha256
0d35a954 322 (base32 "1915kb04k1j4y6k1dx1sgnbddxrl9r1n4q928if2lkrdm73xy30g"))))
eaa8292e
MM
323 (build-system python-build-system)
324 (arguments
325 ;; The tests attempt to access external web servers, so we cannot run
326 ;; them. Furthermore, they are skipped altogether when using Python 2.
327 '(#:tests? #f))
328 (native-inputs
329 `(("python-nose" ,python-nose)
330 ("python-bottle" ,python-bottle)))
331 (inputs
332 `(("curl" ,curl)
333 ("gnutls" ,gnutls)))
334 (home-page "http://pycurl.io/")
335 (synopsis "Lightweight Python wrapper around libcurl")
336 (description "Pycurl is a lightweight wrapper around libcurl. It provides
337high-speed transfers via libcurl and frequently outperforms alternatives.")
338
339 ;; Per 'README.rst', this is dual-licensed: users can redistribute pycurl
340 ;; under the terms of LGPLv2.1+ or Expat.
341 (license (list license:lgpl2.1+ license:expat))))
342
343(define-public python2-pycurl
344 (package-with-python2 python-pycurl))
345
1b2f753d
LC
346(define-public python-webencodings
347 (package
348 (name "python-webencodings")
b0a2c9cb 349 (version "0.5.1")
1b2f753d
LC
350 (source (origin
351 (method url-fetch)
352 (uri (pypi-uri "webencodings" version))
353 (sha256
354 (base32
b0a2c9cb 355 "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk"))))
1b2f753d
LC
356 (build-system python-build-system)
357 (arguments
358 '(#:phases
359 (modify-phases %standard-phases
360 (replace 'check
361 (lambda _
12adfdf0
TGR
362 (invoke "py.test" "-v" "webencodings/tests.py")
363 #t)))))
1b2f753d
LC
364 (native-inputs
365 `(("python-pytest" ,python-pytest)))
366 (home-page "https://github.com/SimonSapin/python-webencodings")
367 (synopsis "Character encoding aliases for legacy web content")
368 (description
369 "In order to be compatible with legacy web content when interpreting
370something like @code{Content-Type: text/html; charset=latin1}, tools need
371to use a particular set of aliases for encoding labels as well as some
372overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
a40f732b 373the web are actually aliases for @code{windows-1252}, and a @code{UTF-8}
1b2f753d
LC
374or @code{UTF-16} BOM takes precedence over any other encoding declaration.
375The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
376defines all such details so that implementations do not have to
377reverse-engineer each other.
378
379This module implements the Encoding standard and has encoding labels and
380BOM detection, but the actual implementation for encoders and decoders
381is Python’s.")
382 (license license:bsd-3)))
383
384(define-public python2-webencodings
385 (package-with-python2 python-webencodings))
386
387(define-public python-openid
388 (package
389 (name "python-openid")
390 (version "3.0.10")
391 (source
392 (origin
393 (method url-fetch)
394 (uri (pypi-uri "python3-openid" version))
395 (sha256
396 (base32
397 "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
398 (build-system python-build-system)
399 (arguments
400 `(#:phases
401 (modify-phases %standard-phases
402 (replace 'check
403 (lambda _
12adfdf0
TGR
404 (invoke "./admin/runtests")
405 #t)))))
1b2f753d
LC
406 (properties `((python2-variant . ,(delay python2-openid))))
407 (propagated-inputs
408 `(("python-defusedxml" ,python-defusedxml)))
409 (native-inputs
410 `(("python-psycopg2" ,python-psycopg2)
411 ("python-django" ,python-django)))
412 (home-page "https://github.com/necaris/python3-openid")
413 (synopsis "OpenID support for servers and consumers")
414 (description "This library provides OpenID authentication for Python, both
415for clients and servers.")
416 (license license:asl2.0)))
417
418(define-public python2-openid
419 (package
420 (name "python2-openid")
421 (version "2.2.5")
422 (source
423 (origin
424 (method url-fetch)
425 (uri (pypi-uri "python-openid" version))
426 (sha256
427 (base32
428 "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
429 (build-system python-build-system)
430 (arguments
431 ;; Python 3 support is in `python3-openid`, a separate package.
432 `(#:python ,python-2))
433 (home-page "https://github.com/openid/python-openid")
434 (synopsis "OpenID support for servers and consumers")
435 (description "This library provides OpenID authentication for Python, both
436for clients and servers.")
437 (license license:asl2.0)))
438
439(define-public python-cssutils
440 (package
441 (name "python-cssutils")
3c5658c5 442 (version "1.0.2")
1b2f753d
LC
443 (source
444 (origin
445 (method url-fetch)
446 (uri (pypi-uri "cssutils" version))
447 (sha256
448 (base32
3c5658c5 449 "1bxchrbqzapwijap0yhlxdil1w9bmwvgx77aizlkhc2mcxjg1z52"))))
1b2f753d
LC
450 (build-system python-build-system)
451 (native-inputs
3c5658c5 452 `(("unzip" ,unzip))) ; for unpacking the source
1b2f753d 453 (arguments
3c5658c5 454 `(#:tests? #f)) ; tests require python-pbr < 1.7.0
1b2f753d
LC
455 (home-page "http://cthedot.de/cssutils/")
456 (synopsis
457 "CSS Cascading Style Sheets library for Python")
458 (description
459 "Cssutils is a Python package for parsing and building CSS
460Cascading Style Sheets. Currently it provides a DOM only and no rendering
461options.")
462 (license license:lgpl3+)))
463
464(define-public python2-cssutils
465 (package-with-python2 python-cssutils))
466
467(define-public python-cssselect
468 (package
469 (name "python-cssselect")
470 (version "0.9.2")
471 (source
472 (origin
473 (method url-fetch)
474 (uri (pypi-uri "cssselect" version))
475 (sha256
476 (base32
477 "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi"))))
478 (build-system python-build-system)
479 (arguments
480 ;; tests fail with message
481 ;; AttributeError: 'module' object has no attribute 'tests'
482 `(#:tests? #f))
483 (home-page
484 "https://pythonhosted.org/cssselect/")
485 (synopsis
486 "CSS3 selector parser and translator to XPath 1.0")
487 (description
488 "Cssselect ia a Python module that parses CSS3 Selectors and translates
489them to XPath 1.0 expressions. Such expressions can be used in lxml or
490another XPath engine to find the matching elements in an XML or HTML document.")
491 (license license:bsd-3)))
492
493(define-public python2-cssselect
494 (package-with-python2 python-cssselect))
495
496(define-public python-openid-cla
497 (package
498 (name "python-openid-cla")
499 (version "1.2")
500 (source
501 (origin
502 (method url-fetch)
503 (uri (pypi-uri "python-openid-cla" version))
504 (sha256
505 (base32
506 "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
507 (build-system python-build-system)
508 (arguments '(#:tests? #f)) ; No tests.
509 (home-page "https://github.com/puiterwijk/python-openid-cla/")
510 (synopsis "Implementation of the OpenID CLA extension for python-openid")
511 (description "@code{openid-cla} is an implementation of the OpenID
512contributor license agreement extension for python-openid.")
513 (license license:bsd-3)))
514
515(define-public python2-openid-cla
516 (package-with-python2 python-openid-cla))
517
518(define-public python-openid-teams
519 (package
520 (name "python-openid-teams")
521 (version "1.1")
522 (source
523 (origin
524 (method url-fetch)
525 (uri (pypi-uri "python-openid-teams" version))
526 (sha256
527 (base32
528 "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
529 (build-system python-build-system)
530 (arguments '(#:tests? #f)) ; No tests.
531 (home-page "https://github.com/puiterwijk/python-openid-teams/")
532 (synopsis "Implementation of the OpenID teams extension for python-openid")
533 (description
534 "@code{openid-teams} is an implementation of the OpenID
535teams extension for python-openid.")
536 (license license:bsd-3)))
537
538(define-public python2-openid-teams
539 (package-with-python2 python-openid-teams))
540
541(define-public python-tornado
542 (package
543 (name "python-tornado")
544 (version "4.5.1")
545 (source
546 (origin
547 (method url-fetch)
548 (uri (pypi-uri "tornado" version))
549 (sha256
550 (base32 "1zbkgcdfq81k298awrm8p0xwbwwn2p3nbizdglzfbkskhai082fv"))))
551 (build-system python-build-system)
552 (arguments
553 '(;; FIXME: Two tests error out with:
554 ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
555 ;; #:phases
556 ;; (modify-phases %standard-phases
557 ;; (replace 'check
558 ;; (lambda _
559 ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
560 ;; ;; "tornado/platform/kqueue.py". This is the supported method:
12adfdf0
TGR
561 ;; (invoke- "python" "-m" "tornado.test")
562 ;; #t)))
1b2f753d
LC
563 #:tests? #f))
564 (native-inputs
565 `(("python-certifi" ,python-certifi)))
566 (propagated-inputs
567 `(("python-backports-abc" ,python-backports-abc)))
568 (home-page "http://www.tornadoweb.org/")
569 (synopsis "Python web framework and asynchronous networking library")
570 (description
571 "Tornado is a Python web framework and asynchronous networking library,
572originally developed at FriendFeed. By using non-blocking network I/O,
573Tornado can scale to tens of thousands of open connections, making it ideal
574for long polling, WebSockets, and other applications that require a long-lived
575connection to each user.")
576 (license license:asl2.0)
577 (properties `((python2-variant . ,(delay python2-tornado))))))
578
579(define-public python2-tornado
580 (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
581 (package (inherit tornado)
582 (propagated-inputs
583 `(("python2-backport-ssl-match-hostname"
584 ,python2-backport-ssl-match-hostname)
585 ("python2-singledispatch" ,python2-singledispatch)
586 ,@(package-propagated-inputs tornado))))))
587
588(define-public python-tornado-http-auth
589 (package
590 (name "python-tornado-http-auth")
591 (version "1.1.0")
592 (source
593 (origin
594 (method url-fetch)
595 (uri (pypi-uri "tornado-http-auth" version))
596 (sha256
597 (base32
598 "0znrgqd7k2s4ia474xizi6h3061zj4sn5n6cq76bkwl3wwshifn5"))))
599 (build-system python-build-system)
600 (propagated-inputs
601 `(("python-tornado" ,python-tornado)))
602 (home-page
603 "https://github.com/gvalkov/tornado-http-auth")
604 (synopsis
605 "Digest and basic authentication module for Tornado")
606 (description
607 "Provides support for adding authentication to services using the Tornado
608web framework, either via the basic or digest authentication schemes.")
609 (license license:asl2.0)))
610
611(define-public python-terminado
612 (package
613 (name "python-terminado")
614 (version "0.6")
615 (source
616 (origin
617 (method url-fetch)
618 (uri (pypi-uri "terminado" version))
619 (sha256
620 (base32
621 "09h1kwi86g5mrk14s4pgbhshd602zry29lnpxamcqz864kva22rc"))))
622 (build-system python-build-system)
623 (propagated-inputs
624 `(("python-tornado" ,python-tornado)
625 ("python-ptyprocess" ,python-ptyprocess)))
626 (native-inputs
627 `(("python-nose" ,python-nose)))
628 (arguments
629 `(#:phases
630 (modify-phases %standard-phases
631 (replace 'check
632 (lambda _
12adfdf0
TGR
633 (invoke "nosetests")
634 #t)))))
1b2f753d
LC
635 (home-page "https://github.com/takluyver/terminado")
636 (synopsis "Terminals served to term.js using Tornado websockets")
637 (description "This package provides a Tornado websocket backend for the
638term.js Javascript terminal emulator library.")
639 (license license:bsd-2)
640 (properties `((python2-variant . ,(delay python2-terminado))))))
641
642(define-public python2-terminado
643 (let ((terminado (package-with-python2 (strip-python2-variant python-terminado))))
644 (package (inherit terminado)
645 (propagated-inputs
646 `(("python2-backport-ssl-match-hostname"
647 ,python2-backport-ssl-match-hostname)
648 ,@(package-propagated-inputs terminado))))))
649
589e3f4e
LC
650(define-public python-wsgi-intercept
651 (package
652 (name "python-wsgi-intercept")
653 (version "1.2.2")
654 (source (origin
655 (method url-fetch)
656 (uri (string-append
657 "https://pypi.python.org/packages/"
658 "38/76/ebcbc24d0cb77db34520a3ca6ed1bd43ace17d182bbd8dd7d976f1c176fb/"
659 "wsgi_intercept-" version ".tar.gz"))
660 (sha256
661 (base32
662 "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
663 (build-system python-build-system)
664 (propagated-inputs
665 `(("python-six" ,python-six)))
666 (native-inputs
667 `(("python-pytest" ,python-pytest)
668 ("python-httplib2" ,python-httplib2)
669 ("python-requests" ,python-requests)
670 ("python-urllib3" ,python-urllib3)))
671 (synopsis "Puts a WSGI application in place of a real URI for testing")
672 (description "Wsgi_intercept installs a WSGI application in place of a real
673URI for testing. Testing a WSGI application normally involves starting a
674server at a local host and port, then pointing your test code to that address.
675Instead, this library lets you intercept calls to any specific host/port
676combination and redirect them into a WSGI application importable by your test
677program. Thus, you can avoid spawning multiple processes or threads to test
678your Web app.")
679 (home-page "https://github.com/cdent/wsgi-intercept")
680 (license license:expat)))
681
1b2f753d
LC
682(define-public python-webob
683 (package
684 (name "python-webob")
685 (version "1.5.1")
686 (source
687 (origin
688 (method url-fetch)
689 (uri (pypi-uri "WebOb" version))
690 (sha256
691 (base32
692 "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
693 (build-system python-build-system)
694 (native-inputs
695 `(("python-nose" ,python-nose)))
9be5ecdf 696 (home-page "https://webob.org/")
1b2f753d
LC
697 (synopsis "WSGI request and response object")
698 (description
699 "WebOb provides wrappers around the WSGI request environment, and an
700object to help create WSGI responses.")
701 (license license:expat)))
702
703(define-public python2-webob
704 (package-with-python2 python-webob))
705
706(define-public python-zope-event
707 (package
708 (name "python-zope-event")
709 (version "4.1.0")
710 (source
711 (origin
712 (method url-fetch)
713 (uri (string-append "https://pypi.python.org/packages/source/z"
714 "/zope.event/zope.event-" version ".tar.gz"))
715 (sha256
716 (base32
717 "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw"))))
718 (build-system python-build-system)
9be5ecdf 719 (home-page "https://pypi.python.org/pypi/zope.event")
1b2f753d
LC
720 (synopsis "Event publishing system for Python")
721 (description "Zope.event provides an event publishing API, intended for
722use by applications which are unaware of any subscribers to their events. It
723is a simple event-dispatching system on which more sophisticated event
724dispatching systems can be built.")
725 (license license:zpl2.1)))
726
727(define-public python2-zope-event
728 (package-with-python2 python-zope-event))
729
730(define-public python-zope-interface
731 (package
732 (name "python-zope-interface")
733 (version "4.1.3")
734 (source
735 (origin
736 (method url-fetch)
737 (uri (string-append "https://pypi.python.org/packages/source/z"
738 "/zope.interface/zope.interface-" version ".tar.gz"))
739 (sha256
740 (base32
741 "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if"))))
742 (build-system python-build-system)
743 (native-inputs
744 `(("python-zope-event" ,python-zope-event)))
745 (home-page "https://github.com/zopefoundation/zope.interface")
746 (synopsis "Python implementation of the \"design by contract\"
747methodology")
748 (description "Zope.interface provides an implementation of \"object
749interfaces\" for Python. Interfaces are a mechanism for labeling objects as
750conforming to a given API or contract.")
751 (license license:zpl2.1)))
752
753(define-public python2-zope-interface
754 (package-with-python2 python-zope-interface))
755
756(define-public python-zope-exceptions
757 (package
758 (name "python-zope-exceptions")
759 (version "4.0.8")
760 (source
761 (origin
762 (method url-fetch)
763 (uri (string-append "https://pypi.python.org/packages/source/z"
764 "/zope.exceptions/zope.exceptions-"
765 version ".tar.gz"))
766 (sha256
767 (base32
768 "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl"))))
769 (build-system python-build-system)
770 (arguments
771 '(#:tests? #f)) ; circular dependency with zope.testrunner
772 (propagated-inputs
773 `(("python-zope-interface" ,python-zope-interface)))
774 (home-page "http://cheeseshop.python.org/pypi/zope.exceptions")
775 (synopsis "Zope exceptions")
776 (description "Zope.exceptions provides general-purpose exception types
777that have uses outside of the Zope framework.")
778 (license license:zpl2.1)))
779
780(define-public python2-zope-exceptions
781 (package-with-python2 python-zope-exceptions))
782
783(define-public python-zope-testing
784 (package
785 (name "python-zope-testing")
9d981019 786 (version "4.6.2")
1b2f753d
LC
787 (source
788 (origin
789 (method url-fetch)
f9a6457d 790 (uri (pypi-uri "zope.testing" version))
1b2f753d
LC
791 (sha256
792 (base32
9d981019 793 "0iiq54hjhkk2gpvzfjac70vyn4r0kw0ngvicshxbdwrkgf2gjq3g"))
1b2f753d
LC
794 (modules '((guix build utils)))
795 (snippet
796 '(begin
797 ;; Remove pre-compiled .pyc files backup files from source.
798 (for-each delete-file (find-files "." "(\\.pyc|~)$"))
799 #t))))
800 (build-system python-build-system)
9be5ecdf 801 (home-page "https://pypi.python.org/pypi/zope.testing")
1b2f753d
LC
802 (synopsis "Zope testing helpers")
803 (description "Zope.testing provides a number of testing utilities for HTML
804forms, HTTP servers, regular expressions, and more.")
805 (license license:zpl2.1)))
806
807(define-public python2-zope-testing
808 (package-with-python2 python-zope-testing))
809
810(define-public python-zope-testrunner
811 (package
812 (name "python-zope-testrunner")
813 (version "4.4.9")
814 (source
815 (origin
816 (method url-fetch)
817 (uri (string-append "https://pypi.python.org/packages/source/z"
818 "/zope.testrunner/zope.testrunner-"
819 version ".zip"))
820 (sha256
821 (base32
822 "1r7iqknhh55y45f64mz5hghgvzx34h1i11k350s0avx6q8gznja1"))))
823 (build-system python-build-system)
824 (arguments
825 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
826 (native-inputs
827 `(("python-six" ,python-six)
828 ;("python-zope-interface" ,python-zope-interface)
829 ("python-zope-exceptions" ,python-zope-exceptions)
830 ("python-zope-testing" ,python-zope-testing)
831 ("unzip" ,unzip)))
832 (propagated-inputs
833 `(("python-zope-interface" ,python-zope-interface)))
9be5ecdf 834 (home-page "https://pypi.python.org/pypi/zope.testrunner")
1b2f753d
LC
835 (synopsis "Zope testrunner script")
836 (description "Zope.testrunner provides a script for running Python
837tests.")
838 (license license:zpl2.1)))
839
840(define-public python2-zope-testrunner
841 (let ((base (package-with-python2 python-zope-testrunner)))
842 (package
843 (inherit base)
844 (native-inputs
845 (append (package-native-inputs base)
846 `(("python2-subunit" ,python2-subunit)
847 ("python2-mimeparse" ,python2-mimeparse)))))))
848
849(define-public python-zope-i18nmessageid
850 (package
851 (name "python-zope-i18nmessageid")
852 (version "4.0.3")
853 (source
854 (origin
855 (method url-fetch)
856 (uri (string-append
857 "https://pypi.python.org/packages/source/z"
858 "/zope.i18nmessageid/zope.i18nmessageid-"
859 version ".tar.gz"))
860 (sha256
861 (base32
862 "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml"))))
863 (build-system python-build-system)
9be5ecdf 864 (home-page "https://pypi.python.org/pypi/zope.i18nmessageid")
1b2f753d
LC
865 (synopsis "Message identifiers for internationalization")
866 (description "Zope.i18nmessageid provides facilities for declaring
867internationalized messages within program source text.")
868 (license license:zpl2.1)))
869
870(define-public python2-zope-i18nmessageid
871 (package-with-python2 python-zope-i18nmessageid))
872
873(define-public python-zope-schema
874 (package
875 (name "python-zope-schema")
876 (version "4.4.2")
877 (source
878 (origin
879 (method url-fetch)
880 (uri (string-append "https://pypi.python.org/packages/source/z"
881 "/zope.schema/zope.schema-" version ".tar.gz"))
882 (sha256
883 (base32
884 "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank"))))
885 (build-system python-build-system)
886 (arguments
887 '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
888 (propagated-inputs
889 `(("python-zope-event" ,python-zope-event)
c695fb76 890 ("python-zope-exceptions" ,python-zope-exceptions)
1b2f753d
LC
891 ("python-zope-interface" ,python-zope-interface)))
892 (native-inputs
893 `(("python-zope-testing" ,python-zope-testing)
894 ("python-coverage" ,python-coverage)
895 ("python-nose" ,python-nose)))
9be5ecdf 896 (home-page "https://pypi.python.org/pypi/zope.schema")
1b2f753d
LC
897 (synopsis "Zope data schemas")
898 (description "Zope.scheme provides extensions to zope.interface for
899defining data schemas.")
900 (license license:zpl2.1)))
901
902(define-public python2-zope-schema
903 (package-with-python2 python-zope-schema))
904
905(define-public python-zope-configuration
906 (package
907 (name "python-zope-configuration")
908 (version "4.0.3")
909 (source (origin
910 (method url-fetch)
911 (uri (string-append "https://pypi.python.org/packages/source/z"
912 "/zope.configuration/zope.configuration-"
913 version ".tar.gz"))
914 (sha256
915 (base32
916 "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n"))))
917 (build-system python-build-system)
918 (arguments
919 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
920 (propagated-inputs
921 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
922 ("python-zope-schema" ,python-zope-schema)))
9be5ecdf 923 (home-page "https://pypi.python.org/pypi/zope.configuration")
1b2f753d
LC
924 (synopsis "Zope Configuration Markup Language")
925 (description "Zope.configuration implements ZCML, the Zope Configuration
926Markup Language.")
927 (license license:zpl2.1)))
928
929(define-public python2-zope-configuration
930 (package-with-python2 python-zope-configuration))
931
932(define-public python-zope-proxy
933 (package
934 (name "python-zope-proxy")
935 (version "4.1.6")
936 (source
937 (origin
938 (method url-fetch)
939 (uri (string-append "https://pypi.python.org/packages/source/z"
940 "/zope.proxy/zope.proxy-" version ".tar.gz"))
941 (sha256
942 (base32
943 "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4"))))
944 (build-system python-build-system)
945 (arguments
946 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
947 (propagated-inputs
948 `(("python-zope-interface" ,python-zope-interface)))
9be5ecdf 949 (home-page "https://pypi.python.org/pypi/zope.proxy")
1b2f753d
LC
950 (synopsis "Generic, transparent proxies")
951 (description "Zope.proxy provides generic, transparent proxies for Python.
952Proxies are special objects which serve as mostly-transparent wrappers around
953another object, intervening in the apparent behavior of the wrapped object
954only when necessary to apply the policy (e.g., access checking, location
955brokering, etc.) for which the proxy is responsible.")
956 (license license:zpl2.1)))
957
958(define-public python2-zope-proxy
959 (package-with-python2 python-zope-proxy))
960
961(define-public python-zope-location
962 (package
963 (name "python-zope-location")
964 (version "4.0.3")
965 (source
966 (origin
967 (method url-fetch)
968 (uri (string-append "https://pypi.python.org/packages/source/z"
969 "/zope.location/zope.location-" version ".tar.gz"))
970 (sha256
971 (base32
972 "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74"))))
973 (build-system python-build-system)
974 (arguments
975 '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
976 (propagated-inputs
977 `(("python-zope-proxy" ,python-zope-proxy)
978 ("python-zope-schema" ,python-zope-schema)))
9be5ecdf 979 (home-page "https://pypi.python.org/pypi/zope.location/")
1b2f753d
LC
980 (synopsis "Zope location library")
981 (description "Zope.location implements the concept of \"locations\" in
982Zope3, which are are special objects that have a structural location.")
983 (license license:zpl2.1)))
984
985(define-public python2-zope-location
986 (package-with-python2 python-zope-location))
987
988(define-public python-zope-security
989 (package
990 (name "python-zope-security")
991 (version "4.0.3")
992 (source
993 (origin
994 (method url-fetch)
995 (uri (string-append "https://pypi.python.org/packages/source/z"
996 "/zope.security/zope.security-" version ".tar.gz"))
997 (sha256
998 (base32
999 "14zmf684amc0x32kq05yxnhfqd1cmyhafkw05gn81rn90zjv6ssy"))))
1000 (build-system python-build-system)
1001 (arguments
1002 '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
1003 (propagated-inputs
1004 `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1005 ("python-zope-proxy" ,python-zope-proxy)
1006 ("python-zope-schema" ,python-zope-schema)))
1007 (native-inputs
1008 `(("python-six" ,python-six)
1009 ("python-zope-component" ,python-zope-component)
1010 ("python-zope-configuration" ,python-zope-configuration)
1011 ("python-zope-location" ,python-zope-location)
1012 ("python-zope-testrunner" ,python-zope-testrunner)
1013 ("python-zope-testing" ,python-zope-testing)))
9be5ecdf 1014 (home-page "https://pypi.python.org/pypi/zope.security")
1b2f753d
LC
1015 (synopsis "Zope security framework")
1016 (description "Zope.security provides a generic mechanism to implement
1017security policies on Python objects.")
1018 (license license:zpl2.1)))
1019
1020(define-public python2-zope-security
1021 (let ((zope-security (package-with-python2 python-zope-security)))
1022 (package (inherit zope-security)
1023 (propagated-inputs
1024 `(("python2-zope-testrunner" ,python2-zope-testrunner)
1025 ,@(alist-delete
1026 "python-zope-testrunner"
1027 (package-propagated-inputs zope-security)))))))
1028
1029(define-public python-zope-component
1030 (package
1031 (name "python-zope-component")
1032 (version "4.3.0")
1033 (source
1034 (origin
1035 (method url-fetch)
1036 (uri (pypi-uri "zope.component" version))
1037 (sha256
1038 (base32
1039 "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
1040 (build-system python-build-system)
1041 (arguments
1042 ;; Skip tests due to circular dependency with python-zope-security.
1043 '(#:tests? #f))
1044 (native-inputs
1045 `(("python-zope-testing" ,python-zope-testing)))
1046 (propagated-inputs
1047 `(("python-zope-event" ,python-zope-event)
1048 ("python-zope-interface" ,python-zope-interface)
1049 ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
1050 ("python-zope-configuration" ,python-zope-configuration)))
1051 (home-page "https://github.com/zopefoundation/zope.component")
1052 (synopsis "Zope Component Architecture")
1053 (description "Zope.component represents the core of the Zope Component
1054Architecture. Together with the zope.interface package, it provides
1055facilities for defining, registering and looking up components.")
1056 (license license:zpl2.1)))
1057
1058(define-public python2-zope-component
1059 (package-with-python2 python-zope-component))
1060
1061(define-public python-ndg-httpsclient
1062 (package
1063 (name "python-ndg-httpsclient")
57d5d3da 1064 (version "0.5.1")
1b2f753d
LC
1065 (source (origin
1066 (method url-fetch)
1067 (uri (pypi-uri "ndg_httpsclient" version))
1068 (sha256
1069 (base32
57d5d3da 1070 "0412b7i1s4vj7lz9r72nmb28h9syd4q2x89bdirkkc3a6z8awbyp"))))
1b2f753d
LC
1071 (build-system python-build-system)
1072 (arguments
1073 '(;; The tests appear to require networking.
1074 #:tests? #f))
1075 (propagated-inputs
1076 `(("python-pyopenssl" ,python-pyopenssl)))
1077 (synopsis "HTTPS support for Python's httplib and urllib2")
1078 (description "This is a HTTPS client implementation for httplib and urllib2
eed0f1e8
TGR
1079based on PyOpenSSL. PyOpenSSL provides a more fully-featured SSL implementation
1080over the default provided with Python and, importantly, enables full
1081verification of the SSL peer.")
1b2f753d
LC
1082 (home-page "https://github.com/cedadev/ndg_httpsclient/")
1083 (license license:bsd-3)))
1084
1085;; python2-openssl requires special care, so package-with-python2 is
1086;; insufficient.
1087(define-public python2-ndg-httpsclient
1088 (package (inherit python-ndg-httpsclient)
1089 (name "python2-ndg-httpsclient")
e3e74e40
TGR
1090 (arguments
1091 (substitute-keyword-arguments (package-arguments python-ndg-httpsclient)
1092 ((#:python _) python-2)))
1b2f753d
LC
1093 (propagated-inputs
1094 `(("python2-pyopenssl" ,python2-pyopenssl)))))
1095
1096(define-public python-websocket-client
1097 (package
1098 (name "python-websocket-client")
1099 (version "0.37.0")
1100 (source
1101 (origin
1102 (method url-fetch)
1103 (uri (pypi-uri "websocket_client" version))
1104 (sha256
1105 (base32
1106 "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7"))))
1107 (build-system python-build-system)
1108 (propagated-inputs
1109 `(("python-six" ,python-six)))
1110 (home-page "https://github.com/liris/websocket-client")
1111 (synopsis "WebSocket client for Python")
1112 (description "The Websocket-client module provides the low level APIs for
1113WebSocket usage in Python programs.")
1114 (license license:lgpl2.1+)))
1115
1116(define-public python2-websocket-client
1117 (package-with-python2 python-websocket-client))
1118
589e3f4e
LC
1119(define-public python-requests
1120 (package
1121 (name "python-requests")
1122 (version "2.13.0")
1123 (source (origin
1124 (method url-fetch)
1125 (uri (pypi-uri "requests" version))
1126 (sha256
1127 (base32
1128 "1s0wg4any4dsv5l3hqjxqk2zgb7pdbqhy9rhc8kh3aigfq4ws8jp"))))
1129 ;; TODO: unbundle urllib3 and chardet.
1130 (build-system python-build-system)
1131 (arguments
1132 ;; FIXME: Some tests require network access.
1133 '(#:tests? #f))
1134 (home-page "http://python-requests.org/")
1135 (synopsis "Python HTTP library")
1136 (description
1137 "Requests is a Python HTTP client library. It aims to be easier to use
1138than Python’s urllib2 library.")
1139 (license license:asl2.0)))
1140
1141;; Some software requires an older version of Requests, notably Docker
1142;; Compose.
1143(define-public python-requests-2.7
1144 (package (inherit python-requests)
1145 (version "2.7.0")
1146 (source (origin
1147 (method url-fetch)
1148 (uri (pypi-uri "requests" version))
1149 (sha256
1150 (base32
1151 "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
1152
1153(define-public python2-requests
1154 (package-with-python2 python-requests))
1155
1b2f753d
LC
1156(define-public python-requests-mock
1157 (package
1158 (name "python-requests-mock")
1159 (version "1.3.0")
1160 (source
1161 (origin
1162 (method url-fetch)
1163 (uri (pypi-uri "requests-mock" version))
1164 (sha256
1165 (base32
1166 "0jr997dvk6zbmhvbpcv3rajrgag69mcsm1ai3w3rgk2jdh6rg1mx"))))
1167 (build-system python-build-system)
1168 (propagated-inputs
1169 `(("python-requests" ,python-requests)
1170 ("python-six" ,python-six)))
1171 (native-inputs
1172 `(("python-pbr" ,python-pbr)
1173 ("python-discover" ,python-discover)
1174 ("python-docutils" ,python-docutils)
1175 ("python-fixtures" ,python-fixtures)
1176 ("python-mock" ,python-mock)
1177 ("python-sphinx" ,python-sphinx)
1178 ("python-testrepository" ,python-testrepository)
1179 ("python-testtools" ,python-testtools)))
1180 (home-page "https://requests-mock.readthedocs.org/")
1181 (synopsis "Mock out responses from the requests package")
1182 (description
1183 "This module provides a building block to stub out the HTTP requests
1184portions of your testing code.")
1185 (properties `((python2-variant . ,(delay python2-requests-mock))))
1186 (license license:asl2.0)))
1187
1188(define-public python2-requests-mock
1189 (package (inherit (package-with-python2
1190 (strip-python2-variant python-requests-mock)))
1191 (arguments
1192 `(#:python ,python-2
1193 ;; FIXME: 'subunit.run discover: error: no such option: --list'
1194 #:tests? #f))))
1195
1196(define-public python-requests-toolbelt
1197 (package
1198 (name "python-requests-toolbelt")
1199 (version "0.8.0")
1200 (source (origin
1201 (method url-fetch)
1202 (uri (pypi-uri "requests-toolbelt" version))
1203 (sha256
1204 (base32
1205 "1dc7l42i4080r8i4m9fj51jx367lqkai170vrv7wd93gdj9k39gn"))))
1206 (build-system python-build-system)
1207 (native-inputs
1208 `(("python-betamax" ,python-betamax)
1209 ("python-mock" ,python-mock)
1210 ("python-pytest" ,python-pytest)))
1211 (propagated-inputs
1212 `(("python-requests" ,python-requests)))
1213 (synopsis "Extensions to python-requests")
1214 (description "This is a toolbelt of useful classes and functions to be used
1215with python-requests.")
1216 (home-page "https://github.com/sigmavirus24/requests-toolbelt")
1217 (license license:asl2.0)))
1218
1219(define-public python2-requests-toolbelt
1220 (package-with-python2 python-requests-toolbelt))
1221
589e3f4e
LC
1222(define-public python-oauthlib
1223 (package
1224 (name "python-oauthlib")
1225 (version "1.0.3")
1226 (source (origin
1227 (method url-fetch)
1228 (uri (pypi-uri "oauthlib" version))
1229 (sha256
1230 (base32
1231 "1bfrj70vdjxjw74khbyh6f0dksv7p5rh2346jnlrffyacd3gwjzg"))))
1232 (build-system python-build-system)
1233 (native-inputs
1234 `(("python-nose" ,python-nose)
1235 ("python-mock" ,python-mock)
1236 ("python-cryptography" ,python-cryptography)
1237 ("python-pyjwt" ,python-pyjwt)
1238 ("python-blinker" ,python-blinker)))
1239 (home-page "https://github.com/idan/oauthlib")
1240 (synopsis "OAuth implementation for Python")
1241 (description
1242 "Oauthlib is a generic, spec-compliant, thorough implementation of the
1243OAuth request-signing logic.")
1244 (license license:bsd-3)
1245 (properties `((python2-variant . ,(delay python2-oauthlib))))))
1246
1247(define-public python2-oauthlib
1248 (let ((base (package-with-python2 (strip-python2-variant python-oauthlib))))
1249 (package
1250 (inherit base)
1251 (native-inputs `(("python2-unittest2" ,python2-unittest2)
1252 ,@(package-native-inputs base))))))
1253
1b2f753d
LC
1254(define-public python-rauth
1255 (package
1256 (name "python-rauth")
1257 (version "0.7.3")
1258 (source
1259 (origin
1260 (method url-fetch)
1261 (uri (pypi-uri "rauth" version))
1262 (sha256
1263 (base32
1264 "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
1265 (build-system python-build-system)
1266 (arguments
1267 `(#:test-target "check"))
1268 (propagated-inputs
1269 `(("python-requests" ,python-requests)))
1270 (home-page "https://github.com/litl/rauth")
1271 (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
1272 (description
1273 "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
1274provides service wrappers for convenient connection initialization and
1275authenticated session objects providing things like keep-alive.")
1276 (license license:expat)
1277 (properties `((python2-variant . ,(delay python2-rauth))))))
1278
1279(define-public python2-rauth
1280 (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
1281 (package
1282 (inherit base)
1283 (native-inputs `(("python2-unittest2" ,python2-unittest2)
1284 ,@(package-native-inputs base))))))
1285
1286(define-public python-urllib3
1287 (package
1288 (name "python-urllib3")
1289 (version "1.18.1")
1290 (source
1291 (origin
1292 (method url-fetch)
1293 (uri (pypi-uri "urllib3" version))
1294 (sha256
1295 (base32
1296 "1wb8aqnq53vzh2amrv8kc66f3h6fx217y0q62y6n30a64p2yqmam"))))
1297 (build-system python-build-system)
1298 (arguments `(#:tests? #f))
1299 (native-inputs
1300 `(;; some packages for tests
1301 ("python-nose" ,python-nose)
1302 ("python-mock" ,python-mock)
1303 ("python-tornado" ,python-tornado)))
1304 (propagated-inputs
1305 `(;; These 5 inputs are used to build urrlib3[secure]
1306 ("python-certifi" ,python-certifi)
1307 ("python-cryptography" ,python-cryptography) ;
1308 ("python-idna" ,python-idna)
1309 ("python-ipaddress" ,python-ipaddress)
1310 ("python-pyopenssl" ,python-pyopenssl)))
1311 (home-page "https://urllib3.readthedocs.org/")
1312 (synopsis "HTTP library with thread-safe connection pooling")
1313 (description
1314 "Urllib3 supports features left out of urllib and urllib2 libraries. It
1315can reuse the same socket connection for multiple requests, it can POST files,
1316supports url redirection and retries, and also gzip and deflate decoding.")
1317 (license license:expat)))
1318
1319(define-public python2-urllib3
1320 (package-with-python2 python-urllib3))
1321
1322(define-public awscli
1323 (package
1324 (name "awscli")
331ebb7f 1325 (version "1.14.41")
1b2f753d
LC
1326 (source
1327 (origin
1328 (method url-fetch)
1329 (uri (pypi-uri name version))
1330 (sha256
1331 (base32
331ebb7f 1332 "0sispclx263lybbk19zp1n9yhg8xxx4jddypzgi24vpjaqnsbwlc"))))
1b2f753d
LC
1333 (build-system python-build-system)
1334 (propagated-inputs
1335 `(("python-colorama" ,python-colorama)
1336 ("python-botocore" ,python-botocore)
1337 ("python-s3transfer" ,python-s3transfer)
1338 ("python-docutils" ,python-docutils)
1339 ("python-pyyaml" ,python-pyyaml)
1340 ("python-rsa" ,python-rsa)))
1341 (arguments
1342 ;; FIXME: The 'pypi' release does not contain tests.
1343 '(#:tests? #f))
1344 (home-page "https://aws.amazon.com/cli/")
1345 (synopsis "Command line client for AWS")
1346 (description "AWS CLI provides a unified command line interface to the
1347Amazon Web Services (AWS) API.")
1348 (license license:asl2.0)))
1349
1350(define-public python-wsgiproxy2
1351 (package
1352 (name "python-wsgiproxy2")
e38a8012 1353 (version "0.4.4")
1b2f753d
LC
1354 (source
1355 (origin
1356 (method url-fetch)
e38a8012 1357 (uri (pypi-uri "WSGIProxy2" version ".tar.gz"))
1b2f753d
LC
1358 (sha256
1359 (base32
e38a8012 1360 "16532rjc94h3w74x52jfckf3yzsp8h6z34522jk4xgjy82hpnd7r"))))
1b2f753d 1361 (build-system python-build-system)
1b2f753d 1362 (native-inputs
e38a8012 1363 `(("python-webtest" ,python-webtest)))
1b2f753d 1364 (propagated-inputs
e38a8012
TGR
1365 `(("python-requests" ,python-requests)
1366 ("python-six" ,python-six)
1367 ("python-urllib3" ,python-urllib3)
1b2f753d 1368 ("python-webob" ,python-webob)))
e38a8012 1369 (home-page "https://github.com/gawel/WSGIProxy2/")
1b2f753d
LC
1370 (synopsis "WSGI Proxy with various http client backends")
1371 (description "WSGI turns HTTP requests into WSGI function calls.
1372WSGIProxy turns WSGI function calls into HTTP requests.
1373It also includes code to sign requests and pass private data,
1374and to spawn subprocesses to handle requests.")
1375 (license license:expat)))
1376
1377(define-public python2-wsgiproxy2
1378 (package-with-python2 python-wsgiproxy2))
1379
1380(define-public python-pastedeploy
1381 (package
1382 (name "python-pastedeploy")
1383 (version "1.5.2")
1384 (source
1385 (origin
1386 (method url-fetch)
1387 (uri (pypi-uri "PasteDeploy" version))
1388 (sha256
1389 (base32
1390 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
1391 (build-system python-build-system)
1392 (native-inputs
1393 `(("python-nose" ,python-nose)))
1394 (home-page "http://pythonpaste.org/deploy/")
1395 (synopsis
1396 "Load, configure, and compose WSGI applications and servers")
1397 (description
1398 "This tool provides code to load WSGI applications and servers from URIs;
1399these URIs can refer to Python Eggs for INI-style configuration files. Paste
1400Script provides commands to serve applications based on this configuration
1401file.")
1402 (license license:expat)))
1403
1404(define-public python2-pastedeploy
1405 (package-with-python2 python-pastedeploy))
1406
1407(define-public python-webtest
1408 (package
1409 (name "python-webtest")
a348af50 1410 (version "2.0.30")
1b2f753d
LC
1411 (source
1412 (origin
1413 (method url-fetch)
1414 (uri (pypi-uri "WebTest" version))
1415 (sha256
1416 (base32
a348af50 1417 "1mb7m4ndklv84mh0pdkhv73yrflcnra61yczj5g3bvwbqlygfsaw"))))
1b2f753d
LC
1418 (build-system python-build-system)
1419 (arguments
1420 `(;; Unfortunately we have to disable tests!
1421 ;; This release of WebTest is pinned to python-nose < 1.3,
1422 ;; but older versions of python-nose are plagued with the following
1423 ;; bug(s), which rears its ugly head during test execution:
1424 ;; https://github.com/nose-devs/nose/issues/759
1425 ;; https://github.com/nose-devs/nose/pull/811
1426 #:tests? #f))
1427 ;; Commented out code is no good, but in this case, once tests
1428 ;; are ready to be enabled again, we should put the following
1429 ;; in place:
1430 ;; (native-inputs
1431 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
1432 ;; ; but see above comment
1433 ;; ("python-coverage" ,python-coverage)
1434 ;; ("python-mock" ,python-mock)
1435 ;; ("python-pastedeploy" ,python-pastedeploy)
1436 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
1437 ;; ("python-pyquery" ,python-pyquery)))
1438 (propagated-inputs
1439 `(("python-waitress" ,python-waitress)
1440 ("python-webob" ,python-webob)
1441 ("python-six" ,python-six)
1442 ("python-beautifulsoup4" ,python-beautifulsoup4)))
1443 (home-page "http://webtest.pythonpaste.org/")
1444 (synopsis "Helper to test WSGI applications")
1445 (description "Webtest allows you to test your Python web applications
1446without starting an HTTP server. It supports anything that supports the
1447minimum of WSGI.")
1448 (license license:expat)))
1449
1450(define-public python2-webtest
1451 (package-with-python2 python-webtest))
1452
1453(define-public python-flask
1454 (package
1455 (name "python-flask")
1456 (version "0.11.1")
1457 (source (origin
1458 (method url-fetch)
1459 (uri (pypi-uri "Flask" version))
1460 (sha256
1461 (base32
1462 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
1463 (build-system python-build-system)
1464 (propagated-inputs
1465 `(("python-itsdangerous" ,python-itsdangerous)
1466 ("python-jinja2" ,python-jinja2)
1467 ("python-click" ,python-click)
1468 ("python-werkzeug" ,python-werkzeug)))
1469 (home-page "https://github.com/mitsuhiko/flask/")
1470 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
1471 (description "Flask is a micro web framework based on the Werkzeug toolkit
1472and Jinja2 template engine. It is called a micro framework because it does not
1473presume or force a developer to use a particular tool or library.")
1474 (license license:bsd-3)))
1475
1476(define-public python2-flask
1477 (package-with-python2 python-flask))
1478
1479(define-public python-flask-wtf
1480 (package
1481 (name "python-flask-wtf")
1482 (version "0.13.1")
1483 (source
1484 (origin
1485 (method url-fetch)
1486 (uri (pypi-uri "Flask-WTF" version))
1487 (sha256
1488 (base32
1489 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
1490 (build-system python-build-system)
1491 (arguments
1492 '(#:phases
1493 (modify-phases %standard-phases
1494 (add-before 'check 'drop-failing-test
1495 (lambda _
1496 ;; FIXME: This file tries resolving an external server, which
1497 ;; fails. Try to patch out the offending section instead of
1498 ;; deleting the whole thing.
1499 (delete-file "tests/test_recaptcha.py")
1500 #t)))))
1501 (propagated-inputs
1502 `(("python-flask-babel" ,python-flask-babel)
1503 ("python-babel" ,python-babel)
1504 ("python-wtforms" ,python-wtforms)))
1505 (native-inputs
1506 `(("python-nose" ,python-nose)))
1507 (home-page "https://github.com/lepture/flask-wtf")
1508 (synopsis "Simple integration of Flask and WTForms")
1509 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
1510upload, and reCAPTCHA.")
1511 (license license:bsd-3)))
1512
1513(define-public python2-flask-wtf
1514 (package-with-python2 python-flask-wtf))
1515
1516(define-public python-flask-multistatic
1517 (package
1518 (name "python-flask-multistatic")
1519 (version "1.0")
1520 (source
1521 (origin
1522 (method url-fetch)
1523 (uri (pypi-uri "flask-multistatic" version))
1524 (sha256
1525 (base32
1526 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
1527 (build-system python-build-system)
1528 (propagated-inputs
1529 `(("python-flask" ,python-flask)))
1530 (home-page "https://pagure.io/flask-multistatic")
1531 (synopsis "Flask plugin to allow overriding static files")
1532 (description "@code{flask-multistatic} is a flask plugin that adds support
1533for overriding static files.")
1534 (license license:gpl3+)))
1535
1536(define-public python2-flask-multistatic
1537 (package-with-python2 python-flask-multistatic))
1538
1539(define-public python-cookies
1540 (package
1541 (name "python-cookies")
1542 (version "2.2.1")
1543 (source (origin
1544 (method url-fetch)
1545 (uri (pypi-uri "cookies" version))
1546 (sha256
1547 (base32
1548 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
1549 (build-system python-build-system)
1550 (arguments
1551 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
1552 #:tests? #f))
1553 (native-inputs
1554 `(("python-pytest" ,python2-pytest)))
1555 (synopsis "HTTP cookie parser and renderer")
1556 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
1557Python.")
1558 (home-page "https://gitlab.com/sashahart/cookies")
1559 (license license:expat)))
1560
1561(define-public python2-cookies
1562 (package-with-python2 python-cookies))
1563
1564(define-public python-responses
1565 (package
1566 (name "python-responses")
1567 (version "0.5.1")
1568 (source (origin
1569 (method url-fetch)
1570 (uri (pypi-uri "responses" version))
1571 (sha256
1572 (base32
1573 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
1574 (build-system python-build-system)
1575 (arguments
1576 `(;; Test suite is not distributed:
1577 ;; https://github.com/getsentry/responses/issues/38
1578 #:tests? #f))
1579 (native-inputs
1580 `(("python-mock" ,python-mock)))
1581 (propagated-inputs
1582 `(("python-requests" ,python-requests)
1583 ("python-cookies" ,python-cookies)
1584 ("python-six" ,python-six)))
1585 (home-page "https://github.com/getsentry/responses")
1586 (synopsis "Utility for mocking out the `requests` Python library")
1587 (description "A utility library for mocking out the `requests` Python
1588library.")
1589 (license license:asl2.0)))
1590
1591(define-public python2-responses
1592 (package-with-python2 python-responses))
1593
1594(define-public python-geventhttpclient
1595 (package
1596 (name "python-geventhttpclient")
1597 (version "1.3.1")
1598 (source (origin
1599 (method url-fetch)
1600 (uri (pypi-uri "geventhttpclient" version))
1601 (sha256
1602 (base32
1603 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
1604 (modules '((guix build utils)))
1605 (snippet
1606 '(begin
1607 ;; Delete pre-compiled files.
1608 (for-each delete-file (find-files "src/geventhttpclient"
1609 ".*\\.pyc"))
1610 #t))))
1611 (build-system python-build-system)
1612 (arguments
1613 '(#:phases
1614 (modify-phases %standard-phases
1615 (add-after 'unpack 'delete-network-tests
1616 (lambda _
1617 (delete-file "src/geventhttpclient/tests/test_client.py")
1618 #t))
1619 (delete 'check)
1620 (add-after 'install 'check
1621 (lambda* (#:key inputs outputs #:allow-other-keys)
1622 (add-installed-pythonpath inputs outputs)
12adfdf0
TGR
1623 (invoke "py.test" "src/geventhttpclient/tests" "-v")
1624 #t)))))
1b2f753d
LC
1625 (native-inputs
1626 `(("python-pytest" ,python-pytest)))
1627 (propagated-inputs
1628 `(("python-certifi" ,python-certifi)
1629 ("python-gevent" ,python-gevent)
1630 ("python-six" ,python-six)))
1631 (home-page "https://github.com/gwik/geventhttpclient")
1632 (synopsis "HTTP client library for gevent")
1633 (description "@code{python-geventhttpclient} is a high performance,
1634concurrent HTTP client library for python using @code{gevent}.")
1635 (license license:expat)))
1636
1637(define-public python2-geventhttpclient
1638 (package-with-python2 python-geventhttpclient))
1639
1640(define-public python-requests-oauthlib
1641 (package
1642 (name "python-requests-oauthlib")
1643 (version "0.6.2")
1644 (source
1645 (origin
1646 (method url-fetch)
1647 (uri (pypi-uri "requests-oauthlib" version))
1648 (sha256
1649 (base32
1650 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
1651 (build-system python-build-system)
1652 (arguments
1653 `(#:phases
1654 (modify-phases %standard-phases
1655 ;; removes tests that require network access
1656 (add-before 'check 'pre-check
1657 (lambda _
1658 (delete-file "tests/test_core.py")
1659 #t)))))
1660 (native-inputs
1661 `(("python-requests-mock" ,python-requests-mock)
1662 ("python-mock" ,python-mock)))
1663 (propagated-inputs
1664 `(("python-oauthlib" ,python-oauthlib)
1665 ("python-requests" ,python-requests)))
1666 (home-page
1667 "https://github.com/requests/requests-oauthlib")
1668 (synopsis
1669 "OAuthlib authentication support for Requests")
1670 (description
1671 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
1672provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
1673 (license license:isc)))
1674
1675(define-public python2-requests-oauthlib
1676 (package-with-python2 python-requests-oauthlib))
1677
1678(define-public python-url
1679 (package
1680 (name "python-url")
1681 (version "0.2.0")
1682 (source (origin
1683 (method url-fetch)
1684 (uri (pypi-uri "url" version))
1685 (sha256
1686 (base32
1687 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
1688 (build-system python-build-system)
1689 (propagated-inputs
1690 `(("python-publicsuffix" ,python-publicsuffix)))
1691 (native-inputs
1692 `(("python-coverage" ,python-coverage)
1693 ("python-nose" ,python-nose)))
1694 (arguments
1695 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
1696 (home-page "https://github.com/seomoz/url-py")
1697 (synopsis "URL Parsing")
1698 (description "Library for parsing urls.")
1699 (license license:expat)
1700 (properties `((python2-variant . ,(delay python2-url))))))
1701
1702(define-public python2-url
1703 (let ((base (package-with-python2 (strip-python2-variant python-url))))
1704 (package (inherit base)
1705 (propagated-inputs
1706 `(("python2-publicsuffix" ,python2-publicsuffix))))))
1707
1708(define-public python-cachecontrol
1709 (package
1710 (name "python-cachecontrol")
1711 (version "0.11.6")
1712 (source
1713 (origin
1714 (method url-fetch)
1715 ;; Pypi does not have tests.
1716 (uri (string-append
1717 "https://github.com/ionrock/cachecontrol/archive/v"
1718 version ".tar.gz"))
1719 (file-name (string-append name "-" version ".tar.gz"))
1720 (sha256
1721 (base32
1722 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
1723 (build-system python-build-system)
1724 (arguments
1725 `(#:phases
1726 (modify-phases %standard-phases
1727 (replace 'check
1728 (lambda _
1729 ;; Drop test that requires internet access.
1730 (delete-file "tests/test_regressions.py")
1731 (setenv "PYTHONPATH"
1732 (string-append (getcwd) "/build/lib:"
1733 (getenv "PYTHONPATH")))
12adfdf0
TGR
1734 (invoke "py.test" "-vv")
1735 #t)))))
1b2f753d
LC
1736 (native-inputs
1737 `(("python-pytest" ,python-pytest)
1738 ("python-redis" ,python-redis)
1739 ("python-webtest" ,python-webtest)
1740 ("python-mock" ,python-mock)))
1741 (propagated-inputs
1742 `(("python-requests" ,python-requests)
1743 ("python-lockfile" ,python-lockfile)))
1744 (home-page "https://github.com/ionrock/cachecontrol")
1745 (synopsis "The httplib2 caching algorithms for use with requests")
1746 (description "CacheControl is a port of the caching algorithms in
1747@code{httplib2} for use with @code{requests} session objects.")
1748 (license license:asl2.0)))
1749
1750(define-public python2-cachecontrol
1751 (package-with-python2 python-cachecontrol))
1752
1753(define-public python-betamax
1754 (package
1755 (name "python-betamax")
98516883 1756 (version "0.8.1")
1b2f753d
LC
1757 (source
1758 (origin
1759 (method url-fetch)
1760 (uri (pypi-uri "betamax" version))
1761 (sha256
1762 (base32
98516883 1763 "1hki1c2vs7adq7zr56wi6i5bhrkia4s2ywpv2c98ibnczz709w2v"))))
1b2f753d
LC
1764 (build-system python-build-system)
1765 (arguments
1766 '(;; Many tests fail because they require networking.
1767 #:tests? #f))
1768 (propagated-inputs
1769 `(("python-requests" ,python-requests)))
1770 (home-page "https://github.com/sigmavirus24/betamax")
1771 (synopsis "Record HTTP interactions with python-requests")
1772 (description "Betamax will record your test suite's HTTP interactions and
1773replay them during future tests. It is designed to work with python-requests.")
1774 (license license:expat)))
1775
1776(define-public python2-betamax
1777 (package-with-python2 python-betamax))
1778
1779(define-public python-betamax-matchers
1780 (package
1781 (name "python-betamax-matchers")
1782 (version "0.4.0")
1783 (source
1784 (origin
1785 (method url-fetch)
1786 (uri (pypi-uri "betamax-matchers" version))
1787 (sha256
1788 (base32
1789 "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
1790 (build-system python-build-system)
1791 (propagated-inputs
1792 `(("python-betamax" ,python-betamax)
1793 ("python-requests-toolbelt" ,python-requests-toolbelt)))
1794 (home-page "https://github.com/sigmavirus24/betamax_matchers")
1795 (synopsis "VCR imitation for python-requests")
1796 (description "@code{betamax-matchers} provides a set of Matchers for
1797Betamax.")
1798 (license license:asl2.0)))
1799
1800(define-public python2-betamax-matchers
1801 (package-with-python2 python-betamax-matchers))
1802
1803(define-public python-s3transfer
1804 (package
1805 (name "python-s3transfer")
bda82eff 1806 (version "0.1.13")
1b2f753d
LC
1807 (source (origin
1808 (method url-fetch)
1809 (uri (pypi-uri "s3transfer" version))
1810 (sha256
1811 (base32
bda82eff 1812 "1harvyn1s8v54n1w5h7c0lg4bgjh68aylhg28s8n174q53h1ip4h"))))
1b2f753d
LC
1813 (build-system python-build-system)
1814 (arguments
1815 `(#:phases
1816 (modify-phases %standard-phases
1817 (replace 'check
1818 (lambda _
1819 ;; 7 of the 'integration' tests require network access or login
1820 ;; credentials.
12adfdf0
TGR
1821 (invoke "nosetests" "--exclude=integration")
1822 #t)))))
1b2f753d
LC
1823 (native-inputs
1824 `(("python-docutils" ,python-docutils)
1825 ("python-mock" ,python-mock)
1826 ("python-nose" ,python-nose)))
1827 (propagated-inputs
1828 `(("python-botocore" ,python-botocore)))
1829 (synopsis "Amazon S3 Transfer Manager")
1830 (description "S3transfer is a Python library for managing Amazon S3
1831transfers.")
1832 (home-page "https://github.com/boto/s3transfer")
1833 (license license:asl2.0)
1834 (properties `((python2-variant . ,(delay python2-s3transfer))))))
1835
1836(define-public python2-s3transfer
1837 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
1838 (package
1839 (inherit base)
1840 (native-inputs
1841 `(("python2-futures" ,python2-futures)
1842 ,@(package-native-inputs base))))))
1843
1844(define-public python-flask-restful
1845 (package
1846 (name "python-flask-restful")
1847 (version "0.3.5")
1848 (source
1849 (origin
1850 (method url-fetch)
1851 (uri (pypi-uri "Flask-RESTful" version))
1852 (sha256
1853 (base32
1854 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
1855 (build-system python-build-system)
1856 (propagated-inputs
1857 `(("python-aniso8601" ,python-aniso8601)
1858 ("python-flask" ,python-flask)
1859 ("python-pycrypto" ,python-pycrypto)
1860 ("python-pytz" ,python-pytz)))
1861 (native-inputs
1862 `(;; Optional dependency of Flask. Tests need it.
1863 ("python-blinker" ,python-blinker)
1864 ("python-mock" ,python-mock) ; For tests
1865 ("python-nose" ,python-nose) ; For tests
1866 ("python-sphinx" ,python-sphinx)))
1867 (home-page
1868 "https://www.github.com/flask-restful/flask-restful/")
1869 (synopsis
1870 "Flask module for creating REST APIs")
1871 (description
1872 "This package contains a Flask module for creating REST APIs.")
1873 (license license:bsd-3)))
1874
1875(define-public python-flask-basicauth
1876 (package
1877 (name "python-flask-basicauth")
1878 (version "0.2.0")
1879 (source
1880 (origin
1881 (method url-fetch)
1882 (uri (pypi-uri "Flask-BasicAuth" version))
1883 (sha256
1884 (base32
1885 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
1886 (build-system python-build-system)
1887 (propagated-inputs
1888 `(("python-flask" ,python-flask)))
1889 (home-page
1890 "https://github.com/jpvanhal/flask-basicauth")
1891 (synopsis
1892 "HTTP basic access authentication for Flask")
1893 (description
1894 "This package provides HTTP basic access authentication for Flask.")
1895 (license license:bsd-3)))
1896
1897(define-public python-flask-sqlalchemy
1898 (package
1899 (name "python-flask-sqlalchemy")
1900 (version "2.1")
1901 (source
1902 (origin
1903 (method url-fetch)
1904 (uri (pypi-uri "Flask-SQLAlchemy" version))
1905 (sha256
1906 (base32
1907 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
1908 (build-system python-build-system)
1909 (propagated-inputs
1910 `(("python-flask" ,python-flask)
1911 ("python-sqlalchemy" ,python-sqlalchemy)))
1912 (home-page
1913 "https://github.com/mitsuhiko/flask-sqlalchemy")
1914 (synopsis
1915 "Module adding SQLAlchemy support to your Flask application")
1916 (description
1917 "This package adds SQLAlchemy support to your Flask application.")
1918 (license license:bsd-3)))
1919
1920(define-public python-flask-restplus
1921 (package
1922 (name "python-flask-restplus")
1923 (version "0.9.2")
1924 (source
1925 (origin
1926 (method url-fetch)
1927 (uri (pypi-uri "flask-restplus" version))
1928 (sha256
1929 (base32
1930 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
1931 (build-system python-build-system)
1932 (arguments
1933 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
1934 ;; #:phases
1935 ;; (modify-phases %standard-phases
1936 ;; (replace 'check
1937 ;; (lambda _
12adfdf0
TGR
1938 ;; (invoke "nosetests")
1939 ;; #t)))))
1b2f753d
LC
1940 (propagated-inputs
1941 `(("python-aniso8601" ,python-aniso8601)
1942 ("python-flask" ,python-flask)
1943 ("python-jsonschema" ,python-jsonschema)
1944 ("python-pytz" ,python-pytz)
1945 ("python-six" ,python-six)))
1946 (native-inputs
1947 `(("python-tzlocal" ,python-tzlocal)
1948 ("python-blinker" ,python-blinker)
1949 ("python-nose" ,python-nose)
1950 ("python-rednose" ,python-rednose)))
1951 (home-page "https://github.com/noirbizarre/flask-restplus")
1952 (synopsis "Framework for documented API development with Flask")
1953 (description "This package provides a framework for API development with
1954the Flask web framework in Python. It is similar to package
1955@code{python-flask-restful} but supports the @code{python-swagger}
1956documentation builder.")
1957 (license license:expat)))
1958
1959(define-public python-flask-restful-swagger
1960 (package
1961 (name "python-flask-restful-swagger")
1962 (version "0.19")
1963 (source
1964 (origin
1965 (method url-fetch)
1966 (uri (pypi-uri "flask-restful-swagger" version))
1967 (sha256
1968 (base32
1969 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
1970 (build-system python-build-system)
1971 (propagated-inputs
1972 `(("python-flask-restful" ,python-flask-restful)))
1973 (home-page "https://github.com/rantav/flask-restful-swagger")
1974 (synopsis "Extract Swagger specs from Flask-Restful projects")
1975 (description "This package lets you extract Swagger API documentation
1976specs from your Flask-Restful projects.")
1977 (license license:expat)))
1978
1979(define-public python2-flask-restful-swagger
1980 (package-with-python2 python-flask-restful-swagger))
1981
1982(define-public python-htmlmin
1983 (package
1984 (name "python-htmlmin")
05075433 1985 (version "0.1.12")
1b2f753d
LC
1986 (source
1987 (origin
1988 (method url-fetch)
1989 (uri (pypi-uri "htmlmin" version))
1990 (sha256
1991 (base32
05075433 1992 "0y51xhabw6x8jk8k93xl8vznshpz3jb6l28075r5sjip613fzhah"))))
1b2f753d 1993 (arguments
05075433 1994 `(#:tests? #f)) ; no tests
1b2f753d
LC
1995 (build-system python-build-system)
1996 (home-page "https://htmlmin.readthedocs.org/en/latest/")
1997 (synopsis "HTML minifier")
1998 (description "@code{htmlmin} is an HTML minifier that just works.
1999It comes with safe defaults and easily configurable options.")
2000 (license license:bsd-3)))
2001
2002(define-public python2-htmlmin
2003 (package-with-python2 python-htmlmin))
2004
2005(define-public python-flask-htmlmin
2006 (package
2007 (name "python-flask-htmlmin")
2008 (version "1.2")
2009 (source
2010 (origin
2011 (method url-fetch)
2012 (uri (pypi-uri "Flask-HTMLmin" version))
2013 (sha256
2014 (base32
2015 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
2016 (propagated-inputs
2017 `(("python-flask" ,python-flask)
2018 ("python-htmlmin" ,python-htmlmin)))
2019 (build-system python-build-system)
2020 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
2021 (synopsis "HTML response minifier for Flask")
2022 (description
2023 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
2024 (license license:bsd-3)))
2025
2026(define-public python2-flask-htmlmin
2027 (package-with-python2 python-flask-htmlmin))
2028
2029(define-public python-flask-login
2030 (package
2031 (name "python-flask-login")
2032 (version "0.4.0")
2033 (source
2034 (origin
2035 (method url-fetch)
2036 (uri (string-append "https://github.com/maxcountryman/flask-login/archive/"
2037 version ".tar.gz"))
2038 (file-name (string-append name "-" version ".tar.gz"))
2039 (sha256
2040 (base32
2041 "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w"))))
2042 (arguments
2043 ;; Tests fail PEP8 compliance. See:
2044 ;; https://github.com/maxcountryman/flask-login/issues/340
2045 `(#:tests? #f))
2046 (build-system python-build-system)
2047 (home-page "https://github.com/maxcountryman/flask-login")
2048 (synopsis "User session management for Flask")
2049 (description
2050 "@code{Flask-Login} provides user session management for Flask. It
2051handles the common tasks of logging in, logging out, and remembering your
2052users' sessions over extended periods of time.")
2053 (license license:expat)))
2054
2055(define-public python2-flask-login
2056 (package-with-python2 python-flask-login))
2057
2058(define-public python-oauth2client
2059 (package
2060 (name "python-oauth2client")
2061 (version "4.0.0")
2062 (source
2063 (origin
2064 (method url-fetch)
2065 (uri (pypi-uri "oauth2client" version))
2066 (sha256
2067 (base32
2068 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
2069 (build-system python-build-system)
2070 (arguments
2071 `(#:tests? #f))
2072 (propagated-inputs
2073 `(("python-httplib2" ,python-httplib2)
2074 ("python-pyasn1" ,python-pyasn1)
2075 ("python-pyasn1-modules" ,python-pyasn1-modules)
2076 ("python-rsa" ,python-rsa)
2077 ("python-six" ,python-six)))
9be5ecdf 2078 (home-page "https://github.com/google/oauth2client/")
1b2f753d
LC
2079 (synopsis "OAuth 2.0 client library")
2080 (description "@code{python-oauth2client} provides an OAuth 2.0 client
2081library for Python")
2082 (license license:asl2.0)))
2083
1ceca46b
MO
2084(define-public python2-oauth2client
2085 (package-with-python2 python-oauth2client))
2086
1b2f753d
LC
2087(define-public python-flask-oidc
2088 (package
2089 (name "python-flask-oidc")
2090 (version "1.1.1")
2091 (source
2092 (origin
2093 (method url-fetch)
2094 (uri (pypi-uri "flask-oidc" version))
2095 (sha256
2096 (base32
2097 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
2098 (build-system python-build-system)
2099 (propagated-inputs
2100 `(("python-flask" ,python-flask)
2101 ("python-itsdangerous" ,python-itsdangerous)
2102 ("python-oauth2client" ,python-oauth2client)
2103 ("python-six" ,python-six)))
2104 (native-inputs
2105 `(("python-nose" ,python-nose)
2106 ("python-mock" ,python-mock)))
2107 (home-page "https://github.com/puiterwijk/flask-oidc")
2108 (synopsis "OpenID Connect extension for Flask")
2109 (description "@code{python-flask-oidc} provides an OpenID Connect extension
2110for Flask.")
2111 (license license:bsd-2)))
2112
2113(define-public python-webassets
2114 (package
2115 (name "python-webassets")
2116 (version "0.12.1")
2117 (source
2118 (origin
2119 (method url-fetch)
2120 (uri (pypi-uri "webassets" version))
2121 (sha256
2122 (base32
2123 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
2124 (build-system python-build-system)
2125 (native-inputs
2126 `(("python-jinja2" ,python-jinja2)
2127 ("python-mock" ,python-mock)
2128 ("python-nose" ,python-nose)
2129 ("python-pytest" ,python-pytest)))
2130 (home-page "https://github.com/miracle2k/webassets")
2131 (synopsis "Media asset management")
2132 (description "Merges, minifies and compresses Javascript and CSS files,
2133supporting a variety of different filters, including YUI, jsmin, jspacker or
2134CSS tidy. Also supports URL rewriting in CSS files.")
2135 (license license:bsd-2)))
2136
2137(define-public python-cssmin
2138 (package
2139 (name "python-cssmin")
2140 (version "0.2.0")
2141 (source
2142 (origin
2143 (method url-fetch)
2144 (uri (pypi-uri "cssmin" version))
2145 (sha256
2146 (base32
2147 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
2148 (build-system python-build-system)
2149 (home-page "https://github.com/zacharyvoase/cssmin")
2150 (synopsis "Python port of the YUI CSS Compressor")
2151 (description "Python port of the YUI CSS Compressor.")
2152 (license (list license:expat license:bsd-3))))
2153
2154(define-public python2-cssmin
2155 (package-with-python2 python-cssmin))
2156
2157(define-public python-elasticsearch
2158 (package
2159 (name "python-elasticsearch")
aabcb6e5 2160 (version "6.1.1")
1b2f753d
LC
2161 (source
2162 (origin
2163 (method url-fetch)
2164 (uri (pypi-uri "elasticsearch" version))
2165 (sha256
2166 (base32
aabcb6e5 2167 "1kjxl45yvvgfb5fmamx0kfsfg9pzphiqrwbkns3s28r1w7ya74cd"))))
1b2f753d
LC
2168 (build-system python-build-system)
2169 (native-inputs
2170 `(("python-mock" ,python-mock)
2171 ("python-nosexcover" ,python-nosexcover)
2172 ("python-pyaml" ,python-pyaml)
2173 ("python-requests" ,python-requests)))
2174 (propagated-inputs
2175 `(("urllib3" ,python-urllib3)))
2176 (arguments
2177 ;; tests require the test_elasticsearch module but it is not distributed.
2178 `(#:tests? #f))
2179 (home-page "https://github.com/elastic/elasticsearch-py")
2180 (synopsis "Low-level client for Elasticsearch")
2181 (description "Official low-level client for Elasticsearch. Its goal is to
2182provide common ground for all Elasticsearch-related code in Python; because of
2183this it tries to be opinion-free and very extendable.")
2184 (license license:expat)))
2185
2186(define-public python2-elasticsearch
2187 (package-with-python2 python-elasticsearch))
2188
2189(define-public python-flask-script
2190 (package
2191 (name "python-flask-script")
6a192184 2192 (version "2.0.6")
1b2f753d
LC
2193 (source
2194 (origin
2195 (method url-fetch)
2196 (uri (pypi-uri "Flask-Script" version))
2197 (sha256
2198 (base32
6a192184 2199 "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4"))))
1b2f753d
LC
2200 (build-system python-build-system)
2201 (propagated-inputs
2202 `(("python-flask" ,python-flask)
2203 ("python-argcomplete" ,python-argcomplete)
2204 ("python-werkzeug" ,python-werkzeug)))
2205 (native-inputs
2206 `(("python-pytest" ,python-pytest)))
2207 (home-page
9be5ecdf 2208 "https://github.com/smurfix/flask-script")
1b2f753d
LC
2209 (synopsis "Scripting support for Flask")
2210 (description "The Flask-Script extension provides support for writing
2211external scripts in Flask. This includes running a development server,
2212a customised Python shell, scripts to set up your database, cronjobs,
2213and other command-line tasks that belong outside the web application
2214itself.")
2215 (license license:bsd-3)))
2216
2217(define-public python2-flask-script
2218 (package-with-python2 python-flask-script))
2219
2220(define-public python-flask-migrate
2221 (package
2222 (name "python-flask-migrate")
2223 (version "2.0.3")
2224 (source
2225 (origin
2226 (method url-fetch)
2227 (uri (pypi-uri "Flask-Migrate" version))
2228 (sha256
2229 (base32
2230 "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
2231 (build-system python-build-system)
2232 (propagated-inputs
2233 `(("python-flask" ,python-flask)
2234 ("python-alembic" ,python-alembic)
2235 ("python-sqlalchemy" ,python-sqlalchemy)
2236 ("python-flask-script" ,python-flask-script)
2237 ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
9be5ecdf 2238 (home-page "https://github.com/miguelgrinberg/flask-migrate/")
1b2f753d
LC
2239 (synopsis "SQLAlchemy database migrations for Flask programs using
2240Alembic")
2241 (description "This package contains SQLAlchemy database migration tools
2242for Flask programs that are using @code{python-alembic}.")
2243 (license license:expat)))
2244
2245(define-public python2-flask-migrate
2246 (package-with-python2 python-flask-migrate))
2247
2248(define-public python-genshi
2249 (package
2250 (name "python-genshi")
2251 (version "0.7")
2252 (source
2253 (origin
2254 (method url-fetch)
2255 (uri (string-append
2256 "https://ftp.edgewall.org/pub/genshi/Genshi-"
2257 version ".tar.gz"))
2258 (patches
2259 (search-patches
2260 ;; The first 4 patches are in the master branch upstream.
2261 ;; See this as a reference https://genshi.edgewall.org/ticket/582
2262 ;; The last 2 are NOT in any branch.
2263 ;; They were sent as attachments to a ticket opened at
2264 ;; https://genshi.edgewall.org/ticket/602#no1
2265 "python-genshi-stripping-of-unsafe-script-tags.patch"
2266 "python-genshi-disable-speedups-on-python-3.3.patch"
2267 "python-genshi-isstring-helper.patch"
2268 "python-genshi-add-support-for-python-3.4-AST.patch"
2269 "python-genshi-fix-tests-on-python-3.5.patch"
2270 "python-genshi-buildable-on-python-2.7.patch"))
2271 (sha256
2272 (base32
2273 "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
2274 (build-system python-build-system)
2275 (home-page "https://genshi.edgewall.org/")
2276 (synopsis "Toolkit for generation of output for the web")
2277 (description "Genshi is a Python library that provides an integrated set
2278of components for parsing, generating, and processing HTML, XML or other
2279textual content for output generation on the web.")
2280 (license license:bsd-3)))
2281
2282;; The linter here claims that patch file names should start with the package
2283;; name. But, in this case the patches are inherited from python-genshi with
2284;; the "python-genshi-" prefix instead of "python2-genshi-".
2285(define-public python2-genshi
2286 (package-with-python2 python-genshi))
2287
2288(define-public python-flask-principal
2289 (package
2290 (name "python-flask-principal")
2291 (version "0.4.0")
2292 (source
2293 (origin
2294 (method url-fetch)
2295 (uri (pypi-uri "Flask-Principal" version))
2296 (sha256
2297 (base32
2298 "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
2299 (build-system python-build-system)
2300 (propagated-inputs
2301 `(("python-blinker" ,python-blinker)))
2302 (native-inputs
2303 `(("python-flask" ,python-flask)
2304 ("python-nose" ,python-nose)))
2305 (home-page "http://packages.python.org/Flask-Principal/")
2306 (synopsis "Identity management for Flask")
2307 (description "@code{flask_principal} is a identity management library for
2308Flask. It supports managing both authentication and authorization data in a
2309thread-local variable.")
2310 (license license:expat)))
2311
2312(define-public python2-flask-principal
2313 (package-with-python2 python-flask-principal))
2314
2315(define-public python-flask-httpauth
2316 (package
2317 (name "python-flask-httpauth")
2318 (version "3.2.3")
2319 (source
2320 (origin
2321 (method url-fetch)
2322 (uri (pypi-uri "Flask-HTTPAuth" version))
2323 (sha256
2324 (base32
2325 "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
2326 (build-system python-build-system)
2327 (native-inputs
2328 `(("python-flask" ,python-flask)))
9be5ecdf 2329 (home-page "https://github.com/miguelgrinberg/flask-httpauth/")
1b2f753d
LC
2330 (synopsis "Basic and Digest HTTP authentication for Flask routes")
2331 (description "@code{flask_httpauth} provides Basic and Digest HTTP
2332authentication for Flask routes.")
2333 (license license:expat)))
2334
2335(define-public python2-flask-httpauth
2336 (package-with-python2 python-flask-httpauth))
2337
2338(define-public python-uritemplate
2339 (package
2340 (name "python-uritemplate")
2341 (version "3.0.0")
2342 (source
2343 (origin
2344 (method url-fetch)
2345 (uri (pypi-uri "uritemplate" version))
2346 (sha256
2347 (base32
2348 "0781gm9g34wa0asc19dx81ng0nqq07igzv3bbvdqmz13pv7469n0"))))
2349 (build-system python-build-system)
2350 (home-page "https://uritemplate.readthedocs.org")
2351 (synopsis "Library to deal with URI Templates")
2352 (description "@code{uritemplate} provides Python library to deal with URI
2353Templates.")
2354 (license license:bsd-2)))
2355
2356(define-public python2-uritemplate
2357 (package-with-python2 python-uritemplate))
2358
589e3f4e
LC
2359(define-public python-publicsuffix
2360 (package
2361 (name "python-publicsuffix")
2362 (version "1.1.0")
2363 (source (origin
2364 (method url-fetch)
2365 (uri (pypi-uri "publicsuffix" version))
2366 (sha256
2367 (base32
2368 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
2369 (build-system python-build-system)
2370 (arguments
2371 `(#:tests? #f)) ; tests use the internet
2372 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
2373 (synopsis "Get suffix for a domain name")
2374 (description "Get a public suffix for a domain name using the Public Suffix
2375List.")
2376 (license license:expat)))
2377
2378(define-public python2-publicsuffix
2379 (package-with-python2 python-publicsuffix))
2380
2381(define-public python-publicsuffix2
2382 (package
2383 (name "python-publicsuffix2")
2384 (version "2.20160818")
2385 (source
2386 (origin
2387 (method url-fetch)
2388 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
2389 (sha256
2390 (base32
2391 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
2392 (build-system python-build-system)
2393 (arguments
2394 '(#:tests? #f)) ; The test suite requires network access.
2395 (home-page "https://github.com/pombredanne/python-publicsuffix2")
2396 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
2397 (description "Get a public suffix for a domain name using the Public Suffix
2398List. Forked from and using the same API as the publicsuffix package.")
2399 (license (list license:expat license:mpl2.0))))
2400
2401(define-public python2-publicsuffix2
2402 (package-with-python2 python-publicsuffix2))
98c6a025
RW
2403
2404(define-public python-werkzeug
2405 (package
2406 (name "python-werkzeug")
2407 (version "0.11.15")
2408 (source
2409 (origin
2410 (method url-fetch)
2411 (uri (pypi-uri "Werkzeug" version))
2412 (sha256
2413 (base32
2414 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
2415 (build-system python-build-system)
2416 (native-inputs
2417 `(("python-pytest" ,python-pytest)))
2418 (home-page "http://werkzeug.pocoo.org/")
2419 (synopsis "Utilities for WSGI applications")
2420 (description "One of the most advanced WSGI utility modules. It includes a
2421powerful debugger, full-featured request and response objects, HTTP utilities to
2422handle entity tags, cache control headers, HTTP dates, cookie handling, file
2423uploads, a powerful URL routing system and a bunch of community-contributed
2424addon modules.")
2425 (license license:x11)))
2426
2427(define-public python2-werkzeug
2428 (package-with-python2 python-werkzeug))
2429
2430(define-public python-bottle
2431 (package
2432 (name "python-bottle")
2433 (version "0.12.13")
2434 (source
2435 (origin
2436 (method url-fetch)
2437 (uri (pypi-uri "bottle" version))
2438 (sha256
2439 (base32
2440 "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
2441 (build-system python-build-system)
2442 (home-page "http://bottlepy.org/")
2443 (synopsis "WSGI framework for small web-applications.")
2444 (description "@code{python-bottle} is a WSGI framework for small web-applications.")
2445 (license license:expat)))
2446
2447(define-public python2-bottle
2448 (package-with-python2 python-bottle))
2449
2450(define-public python-wtforms
2451 (package
2452 (name "python-wtforms")
2453 (version "2.1")
2454 (source
2455 (origin
2456 (method url-fetch)
2457 (uri (pypi-uri "WTForms" version ".zip"))
2458 (sha256
2459 (base32
2460 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
2461 (build-system python-build-system)
2462 (arguments
2463 '(#:phases
2464 (modify-phases %standard-phases
2465 (add-after 'unpack 'remove-django-test
2466 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
2467 (lambda _
2468 (substitute*
2469 "tests/runtests.py"
2470 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
2471 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
2472 #t)))))
2473 (native-inputs
2474 `(("unzip" ,unzip)))
2475 (home-page "http://wtforms.simplecodes.com/")
2476 (synopsis
2477 "Form validation and rendering library for Python web development")
2478 (description
2479 "WTForms is a flexible forms validation and rendering library
2480for Python web development. It is very similar to the web form API
2481available in Django, but is a standalone package.")
2482 (license license:bsd-3)))
2483
2484(define-public python2-wtforms
2485 (package-with-python2 python-wtforms))
2486
2487(define-public python-paste
2488 (package
2489 (name "python-paste")
2490 (version "2.0.3")
2491 (source
2492 (origin
2493 (method url-fetch)
2494 (uri (pypi-uri "Paste" version))
2495 (sha256
2496 (base32
2497 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
2498 (patches (search-patches "python-paste-remove-website-test.patch"
2499 "python-paste-remove-timing-test.patch"))))
2500 (build-system python-build-system)
2501 (native-inputs
2502 `(("python-nose" ,python-nose)))
2503 (propagated-inputs
2504 `(("python-six" ,python-six)))
2505 (home-page "http://pythonpaste.org")
2506 (synopsis
2507 "Python web development tools, focusing on WSGI")
2508 (description
2509 "Paste provides a variety of web development tools and middleware which
2510can be nested together to build web applications. Paste's design closely
2511follows ideas flowing from WSGI (Web Standard Gateway Interface).")
2512 (license license:expat)))
2513
2514(define-public python2-paste
2515 (package-with-python2 python-paste))
2516
2517(define-public python-pastescript
2518 (package
2519 (name "python-pastescript")
2520 (version "2.0.2")
2521 (source
2522 (origin
2523 (method url-fetch)
2524 (uri (pypi-uri "PasteScript" version))
2525 (sha256
2526 (base32
2527 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
2528 (build-system python-build-system)
2529 (native-inputs
2530 `(("python-nose" ,python-nose)))
2531 (propagated-inputs
2532 `(("python-paste" ,python-paste)
2533 ("python-pastedeploy" ,python-pastedeploy)))
2534 (home-page "http://pythonpaste.org/script/")
2535 (arguments
2536 '(;; Unfortunately, this requires the latest unittest2,
2537 ;; but that requires traceback2 which requires linecache2 which requires
2538 ;; unittest2. So we're skipping tests for now.
2539 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
2540 ;; so in theory we could get around this situation somehow.)
2541 #:tests? #f))
2542 (synopsis
2543 "Pluggable command line tool for serving web applications and more")
2544 (description
2545 "PasteScript is a plugin-friendly command line tool which provides a
2546variety of features, from launching web applications to bootstrapping project
2547layouts.")
2548 (license license:expat)))
2549
2550(define-public python2-pastescript
2551 (package-with-python2 python-pastescript))
c5964611
2552
2553(define-public python2-urlgrabber
2554 (package
2555 (name "python2-urlgrabber")
2556 (version "3.10.2")
2557 (source
2558 (origin
2559 (method url-fetch)
2560 (uri (pypi-uri "urlgrabber" version))
2561 (sha256
2562 (base32 "0w1h7hlsq406bxfy2pn4i9bd003bwl0q9b7p03z3g6yl0d21ddq5"))))
2563 (build-system python-build-system)
2564 (arguments `(#:python ,python-2)) ; urlgrabber supports python2 only
2565 (home-page "http://urlgrabber.baseurl.org")
2566 (synopsis "High-level cross protocol url-grabber")
2567 (description "@code{urlgrabber} is Python2 library that unifies access to
2568files available on web, FTP or locally. It supports HTTP, FTP and file://
2569protocols, it supports features like HTTP keep-alive, reget, throttling and
2570more.")
2571 (license license:lgpl2.1+)))
2572
85ccc0c2
NG
2573(define-public python-pycares
2574 (package
2575 (name "python-pycares")
2576 (version "2.3.0")
2577 (source
2578 (origin
2579 (method url-fetch)
2580 (uri (pypi-uri "pycares" version))
2581 (sha256
2582 (base32
2583 "0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n"))))
2584 (build-system python-build-system)
2585 (arguments
2586 `(#:tests? #f)) ;tests require internet access
2587 (home-page "http://github.com/saghul/pycares")
2588 (synopsis "Python interface for @code{c-ares}")
2589 (description "@code{pycares} is a Python module which provides an
2590interface to @code{c-ares}, a C library that performs DNS requests and
2591name resolutions asynchronously.")
2592 (license license:expat)))
2eccb414
NG
2593
2594(define-public python-yarl
2595 (package
2596 (name "python-yarl")
2597 (version "1.1.1")
2598 (source
2599 (origin
2600 (method url-fetch)
2601 (uri (pypi-uri "yarl" version))
2602 (sha256
2603 (base32
2604 "1s6z13g8vgxfkkqwhn6imnm7pl7ky9arv4jygnn6bcndcbidg7d6"))))
2605 (build-system python-build-system)
2606 (native-inputs
2607 `(("python-pytest" ,python-pytest)
2608 ("python-pytest-runner" ,python-pytest-runner)))
2609 (propagated-inputs
2610 `(("python-idna" ,python-idna)
2611 ("python-multidict" ,python-multidict)))
2612 (home-page "https://github.com/aio-libs/yarl/")
2613 (synopsis "Yet another URL library")
2614 (description "@code{yarl} module provides handy @code{URL} class
2615for URL parsing and changing.")
2616 (license license:asl2.0)))
961bcdf5
MO
2617
2618(define-public python-google-api-client
2619 (package
2620 (name "python-google-api-client")
2621 (version "1.6.7")
2622 (source
2623 (origin
2624 (method url-fetch)
2625 (uri (pypi-uri "google-api-python-client" version))
2626 (sha256
2627 (base32
2628 "1wpbbbxfpy9mwxdy3kn352cb590ladv574j1aa2l4grjdqw3ln05"))))
2629 (build-system python-build-system)
2630 (arguments
2631 '(#:tests? #f)) ; tests require internet access
2632 (native-inputs
2633 `(("python-httplib2" ,python-httplib2)
2634 ("python-six" ,python-six)
2635 ("python-oauth2client" ,python-oauth2client)
2636 ("python-uritemplate" ,python-uritemplate)))
2637 (home-page "https://github.com/google/google-api-python-client")
2638 (synopsis "Core Python library for accessing Google APIs")
2639 (description "Python client library for Google's discovery based APIs")
2640 (license license:asl2.0)))
2641
2642(define-public python2-google-api-client
2643 (package-with-python2 python-google-api-client))