gnu: glusterfs: Update to 3.10.12.
[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")
180 (version "1.0.3")
181 (source
182 (origin
183 (method url-fetch)
184 (uri (pypi-uri "sockjs-tornado" version))
185 (sha256
186 (base32
187 "16cff40nniqsyvda1pb2j3b4zwmrw7y2g1vqq78lp20xpmhnwwkd"))))
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
LC
196 (synopsis
197 "SockJS python server implementation on top of Tornado framework")
198 (description
199 "SockJS-tornado provides the server side counterpart to a SockJS client
200library, through the Tornado framework.
201
202SockJS provides a low latency, full duplex, cross-domain communication channel
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")
ebf09e77 1064 (version "0.5.0")
1b2f753d
LC
1065 (source (origin
1066 (method url-fetch)
1067 (uri (pypi-uri "ndg_httpsclient" version))
1068 (sha256
1069 (base32
ebf09e77 1070 "12q8rjvsvjphj6lvvcka2izdjr36a5lgkygajwx6p4wh0x1za2f0"))))
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
1079based on PyOpenSSL. PyOpenSSL provides a more fully featured SSL implementation
1080over the default provided with Python and importantly enables full verification
1081of the SSL peer.")
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")
1353 (version "0.4.2")
1354 (source
1355 (origin
1356 (method url-fetch)
1357 (uri (pypi-uri "WSGIProxy2" version ".zip"))
1358 (sha256
1359 (base32
1360 "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4"))))
1361 (build-system python-build-system)
1362 (arguments
1363 '(;; Wsgiproxy2's test suite requires Restkit, which does not yet fully
1364 ;; support Python 3:
1365 ;; https://github.com/benoitc/restkit/issues/140
1366 #:tests? #f))
1367 (native-inputs
1368 `(("unzip" ,unzip)
1369 ("python-nose" ,python-nose)
1370 ("python-coverage" ,python-coverage)))
1371 (propagated-inputs
1372 `(("python-six" ,python-six)
1373 ("python-webob" ,python-webob)))
1374 (home-page
1375 "https://github.com/gawel/WSGIProxy2/")
1376 (synopsis "WSGI Proxy with various http client backends")
1377 (description "WSGI turns HTTP requests into WSGI function calls.
1378WSGIProxy turns WSGI function calls into HTTP requests.
1379It also includes code to sign requests and pass private data,
1380and to spawn subprocesses to handle requests.")
1381 (license license:expat)))
1382
1383(define-public python2-wsgiproxy2
1384 (package-with-python2 python-wsgiproxy2))
1385
1386(define-public python-pastedeploy
1387 (package
1388 (name "python-pastedeploy")
1389 (version "1.5.2")
1390 (source
1391 (origin
1392 (method url-fetch)
1393 (uri (pypi-uri "PasteDeploy" version))
1394 (sha256
1395 (base32
1396 "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm"))))
1397 (build-system python-build-system)
1398 (native-inputs
1399 `(("python-nose" ,python-nose)))
1400 (home-page "http://pythonpaste.org/deploy/")
1401 (synopsis
1402 "Load, configure, and compose WSGI applications and servers")
1403 (description
1404 "This tool provides code to load WSGI applications and servers from URIs;
1405these URIs can refer to Python Eggs for INI-style configuration files. Paste
1406Script provides commands to serve applications based on this configuration
1407file.")
1408 (license license:expat)))
1409
1410(define-public python2-pastedeploy
1411 (package-with-python2 python-pastedeploy))
1412
1413(define-public python-webtest
1414 (package
1415 (name "python-webtest")
e46dd02d 1416 (version "2.0.29")
1b2f753d
LC
1417 (source
1418 (origin
1419 (method url-fetch)
1420 (uri (pypi-uri "WebTest" version))
1421 (sha256
1422 (base32
e46dd02d 1423 "0bcj1ica5lnmj5zbvk46x28kgphcsgh7sfnwjmn0cr94mhawrg6v"))))
1b2f753d
LC
1424 (build-system python-build-system)
1425 (arguments
1426 `(;; Unfortunately we have to disable tests!
1427 ;; This release of WebTest is pinned to python-nose < 1.3,
1428 ;; but older versions of python-nose are plagued with the following
1429 ;; bug(s), which rears its ugly head during test execution:
1430 ;; https://github.com/nose-devs/nose/issues/759
1431 ;; https://github.com/nose-devs/nose/pull/811
1432 #:tests? #f))
1433 ;; Commented out code is no good, but in this case, once tests
1434 ;; are ready to be enabled again, we should put the following
1435 ;; in place:
1436 ;; (native-inputs
1437 ;; `(("python-nose" ,python-nose) ; technially < 1.3,
1438 ;; ; but see above comment
1439 ;; ("python-coverage" ,python-coverage)
1440 ;; ("python-mock" ,python-mock)
1441 ;; ("python-pastedeploy" ,python-pastedeploy)
1442 ;; ("python-wsgiproxy2" ,python-wsgiproxy2)
1443 ;; ("python-pyquery" ,python-pyquery)))
1444 (propagated-inputs
1445 `(("python-waitress" ,python-waitress)
1446 ("python-webob" ,python-webob)
1447 ("python-six" ,python-six)
1448 ("python-beautifulsoup4" ,python-beautifulsoup4)))
1449 (home-page "http://webtest.pythonpaste.org/")
1450 (synopsis "Helper to test WSGI applications")
1451 (description "Webtest allows you to test your Python web applications
1452without starting an HTTP server. It supports anything that supports the
1453minimum of WSGI.")
1454 (license license:expat)))
1455
1456(define-public python2-webtest
1457 (package-with-python2 python-webtest))
1458
1459(define-public python-flask
1460 (package
1461 (name "python-flask")
1462 (version "0.11.1")
1463 (source (origin
1464 (method url-fetch)
1465 (uri (pypi-uri "Flask" version))
1466 (sha256
1467 (base32
1468 "03kbfll4sj3v5z7r31c7bhfpi11r1np076d4p1k2kg4yzcmkywdl"))))
1469 (build-system python-build-system)
1470 (propagated-inputs
1471 `(("python-itsdangerous" ,python-itsdangerous)
1472 ("python-jinja2" ,python-jinja2)
1473 ("python-click" ,python-click)
1474 ("python-werkzeug" ,python-werkzeug)))
1475 (home-page "https://github.com/mitsuhiko/flask/")
1476 (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
1477 (description "Flask is a micro web framework based on the Werkzeug toolkit
1478and Jinja2 template engine. It is called a micro framework because it does not
1479presume or force a developer to use a particular tool or library.")
1480 (license license:bsd-3)))
1481
1482(define-public python2-flask
1483 (package-with-python2 python-flask))
1484
1485(define-public python-flask-wtf
1486 (package
1487 (name "python-flask-wtf")
1488 (version "0.13.1")
1489 (source
1490 (origin
1491 (method url-fetch)
1492 (uri (pypi-uri "Flask-WTF" version))
1493 (sha256
1494 (base32
1495 "04l5743j2dici46038sqlzvf0xzpg8rf7s9ld2x24xv7f4idg990"))))
1496 (build-system python-build-system)
1497 (arguments
1498 '(#:phases
1499 (modify-phases %standard-phases
1500 (add-before 'check 'drop-failing-test
1501 (lambda _
1502 ;; FIXME: This file tries resolving an external server, which
1503 ;; fails. Try to patch out the offending section instead of
1504 ;; deleting the whole thing.
1505 (delete-file "tests/test_recaptcha.py")
1506 #t)))))
1507 (propagated-inputs
1508 `(("python-flask-babel" ,python-flask-babel)
1509 ("python-babel" ,python-babel)
1510 ("python-wtforms" ,python-wtforms)))
1511 (native-inputs
1512 `(("python-nose" ,python-nose)))
1513 (home-page "https://github.com/lepture/flask-wtf")
1514 (synopsis "Simple integration of Flask and WTForms")
1515 (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
1516upload, and reCAPTCHA.")
1517 (license license:bsd-3)))
1518
1519(define-public python2-flask-wtf
1520 (package-with-python2 python-flask-wtf))
1521
1522(define-public python-flask-multistatic
1523 (package
1524 (name "python-flask-multistatic")
1525 (version "1.0")
1526 (source
1527 (origin
1528 (method url-fetch)
1529 (uri (pypi-uri "flask-multistatic" version))
1530 (sha256
1531 (base32
1532 "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
1533 (build-system python-build-system)
1534 (propagated-inputs
1535 `(("python-flask" ,python-flask)))
1536 (home-page "https://pagure.io/flask-multistatic")
1537 (synopsis "Flask plugin to allow overriding static files")
1538 (description "@code{flask-multistatic} is a flask plugin that adds support
1539for overriding static files.")
1540 (license license:gpl3+)))
1541
1542(define-public python2-flask-multistatic
1543 (package-with-python2 python-flask-multistatic))
1544
1545(define-public python-cookies
1546 (package
1547 (name "python-cookies")
1548 (version "2.2.1")
1549 (source (origin
1550 (method url-fetch)
1551 (uri (pypi-uri "cookies" version))
1552 (sha256
1553 (base32
1554 "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
1555 (build-system python-build-system)
1556 (arguments
1557 `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
1558 #:tests? #f))
1559 (native-inputs
1560 `(("python-pytest" ,python2-pytest)))
1561 (synopsis "HTTP cookie parser and renderer")
1562 (description "A RFC 6265-compliant HTTP cookie parser and renderer in
1563Python.")
1564 (home-page "https://gitlab.com/sashahart/cookies")
1565 (license license:expat)))
1566
1567(define-public python2-cookies
1568 (package-with-python2 python-cookies))
1569
1570(define-public python-responses
1571 (package
1572 (name "python-responses")
1573 (version "0.5.1")
1574 (source (origin
1575 (method url-fetch)
1576 (uri (pypi-uri "responses" version))
1577 (sha256
1578 (base32
1579 "1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
1580 (build-system python-build-system)
1581 (arguments
1582 `(;; Test suite is not distributed:
1583 ;; https://github.com/getsentry/responses/issues/38
1584 #:tests? #f))
1585 (native-inputs
1586 `(("python-mock" ,python-mock)))
1587 (propagated-inputs
1588 `(("python-requests" ,python-requests)
1589 ("python-cookies" ,python-cookies)
1590 ("python-six" ,python-six)))
1591 (home-page "https://github.com/getsentry/responses")
1592 (synopsis "Utility for mocking out the `requests` Python library")
1593 (description "A utility library for mocking out the `requests` Python
1594library.")
1595 (license license:asl2.0)))
1596
1597(define-public python2-responses
1598 (package-with-python2 python-responses))
1599
1600(define-public python-geventhttpclient
1601 (package
1602 (name "python-geventhttpclient")
1603 (version "1.3.1")
1604 (source (origin
1605 (method url-fetch)
1606 (uri (pypi-uri "geventhttpclient" version))
1607 (sha256
1608 (base32
1609 "07d0q3wzmml75227r6y6mrl5a0zpf4v9gj0ni5rhbyzmaj4az1xx"))
1610 (modules '((guix build utils)))
1611 (snippet
1612 '(begin
1613 ;; Delete pre-compiled files.
1614 (for-each delete-file (find-files "src/geventhttpclient"
1615 ".*\\.pyc"))
1616 #t))))
1617 (build-system python-build-system)
1618 (arguments
1619 '(#:phases
1620 (modify-phases %standard-phases
1621 (add-after 'unpack 'delete-network-tests
1622 (lambda _
1623 (delete-file "src/geventhttpclient/tests/test_client.py")
1624 #t))
1625 (delete 'check)
1626 (add-after 'install 'check
1627 (lambda* (#:key inputs outputs #:allow-other-keys)
1628 (add-installed-pythonpath inputs outputs)
12adfdf0
TGR
1629 (invoke "py.test" "src/geventhttpclient/tests" "-v")
1630 #t)))))
1b2f753d
LC
1631 (native-inputs
1632 `(("python-pytest" ,python-pytest)))
1633 (propagated-inputs
1634 `(("python-certifi" ,python-certifi)
1635 ("python-gevent" ,python-gevent)
1636 ("python-six" ,python-six)))
1637 (home-page "https://github.com/gwik/geventhttpclient")
1638 (synopsis "HTTP client library for gevent")
1639 (description "@code{python-geventhttpclient} is a high performance,
1640concurrent HTTP client library for python using @code{gevent}.")
1641 (license license:expat)))
1642
1643(define-public python2-geventhttpclient
1644 (package-with-python2 python-geventhttpclient))
1645
1646(define-public python-requests-oauthlib
1647 (package
1648 (name "python-requests-oauthlib")
1649 (version "0.6.2")
1650 (source
1651 (origin
1652 (method url-fetch)
1653 (uri (pypi-uri "requests-oauthlib" version))
1654 (sha256
1655 (base32
1656 "0ykff67sjcl227c23g0rxzfx34rr5bf21kwv0z3zmgk0lfmch7hn"))))
1657 (build-system python-build-system)
1658 (arguments
1659 `(#:phases
1660 (modify-phases %standard-phases
1661 ;; removes tests that require network access
1662 (add-before 'check 'pre-check
1663 (lambda _
1664 (delete-file "tests/test_core.py")
1665 #t)))))
1666 (native-inputs
1667 `(("python-requests-mock" ,python-requests-mock)
1668 ("python-mock" ,python-mock)))
1669 (propagated-inputs
1670 `(("python-oauthlib" ,python-oauthlib)
1671 ("python-requests" ,python-requests)))
1672 (home-page
1673 "https://github.com/requests/requests-oauthlib")
1674 (synopsis
1675 "OAuthlib authentication support for Requests")
1676 (description
1677 "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
1678provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
1679 (license license:isc)))
1680
1681(define-public python2-requests-oauthlib
1682 (package-with-python2 python-requests-oauthlib))
1683
1684(define-public python-url
1685 (package
1686 (name "python-url")
1687 (version "0.2.0")
1688 (source (origin
1689 (method url-fetch)
1690 (uri (pypi-uri "url" version))
1691 (sha256
1692 (base32
1693 "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
1694 (build-system python-build-system)
1695 (propagated-inputs
1696 `(("python-publicsuffix" ,python-publicsuffix)))
1697 (native-inputs
1698 `(("python-coverage" ,python-coverage)
1699 ("python-nose" ,python-nose)))
1700 (arguments
1701 `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
1702 (home-page "https://github.com/seomoz/url-py")
1703 (synopsis "URL Parsing")
1704 (description "Library for parsing urls.")
1705 (license license:expat)
1706 (properties `((python2-variant . ,(delay python2-url))))))
1707
1708(define-public python2-url
1709 (let ((base (package-with-python2 (strip-python2-variant python-url))))
1710 (package (inherit base)
1711 (propagated-inputs
1712 `(("python2-publicsuffix" ,python2-publicsuffix))))))
1713
1714(define-public python-cachecontrol
1715 (package
1716 (name "python-cachecontrol")
1717 (version "0.11.6")
1718 (source
1719 (origin
1720 (method url-fetch)
1721 ;; Pypi does not have tests.
1722 (uri (string-append
1723 "https://github.com/ionrock/cachecontrol/archive/v"
1724 version ".tar.gz"))
1725 (file-name (string-append name "-" version ".tar.gz"))
1726 (sha256
1727 (base32
1728 "0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
1729 (build-system python-build-system)
1730 (arguments
1731 `(#:phases
1732 (modify-phases %standard-phases
1733 (replace 'check
1734 (lambda _
1735 ;; Drop test that requires internet access.
1736 (delete-file "tests/test_regressions.py")
1737 (setenv "PYTHONPATH"
1738 (string-append (getcwd) "/build/lib:"
1739 (getenv "PYTHONPATH")))
12adfdf0
TGR
1740 (invoke "py.test" "-vv")
1741 #t)))))
1b2f753d
LC
1742 (native-inputs
1743 `(("python-pytest" ,python-pytest)
1744 ("python-redis" ,python-redis)
1745 ("python-webtest" ,python-webtest)
1746 ("python-mock" ,python-mock)))
1747 (propagated-inputs
1748 `(("python-requests" ,python-requests)
1749 ("python-lockfile" ,python-lockfile)))
1750 (home-page "https://github.com/ionrock/cachecontrol")
1751 (synopsis "The httplib2 caching algorithms for use with requests")
1752 (description "CacheControl is a port of the caching algorithms in
1753@code{httplib2} for use with @code{requests} session objects.")
1754 (license license:asl2.0)))
1755
1756(define-public python2-cachecontrol
1757 (package-with-python2 python-cachecontrol))
1758
1759(define-public python-betamax
1760 (package
1761 (name "python-betamax")
98516883 1762 (version "0.8.1")
1b2f753d
LC
1763 (source
1764 (origin
1765 (method url-fetch)
1766 (uri (pypi-uri "betamax" version))
1767 (sha256
1768 (base32
98516883 1769 "1hki1c2vs7adq7zr56wi6i5bhrkia4s2ywpv2c98ibnczz709w2v"))))
1b2f753d
LC
1770 (build-system python-build-system)
1771 (arguments
1772 '(;; Many tests fail because they require networking.
1773 #:tests? #f))
1774 (propagated-inputs
1775 `(("python-requests" ,python-requests)))
1776 (home-page "https://github.com/sigmavirus24/betamax")
1777 (synopsis "Record HTTP interactions with python-requests")
1778 (description "Betamax will record your test suite's HTTP interactions and
1779replay them during future tests. It is designed to work with python-requests.")
1780 (license license:expat)))
1781
1782(define-public python2-betamax
1783 (package-with-python2 python-betamax))
1784
1785(define-public python-betamax-matchers
1786 (package
1787 (name "python-betamax-matchers")
1788 (version "0.4.0")
1789 (source
1790 (origin
1791 (method url-fetch)
1792 (uri (pypi-uri "betamax-matchers" version))
1793 (sha256
1794 (base32
1795 "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
1796 (build-system python-build-system)
1797 (propagated-inputs
1798 `(("python-betamax" ,python-betamax)
1799 ("python-requests-toolbelt" ,python-requests-toolbelt)))
1800 (home-page "https://github.com/sigmavirus24/betamax_matchers")
1801 (synopsis "VCR imitation for python-requests")
1802 (description "@code{betamax-matchers} provides a set of Matchers for
1803Betamax.")
1804 (license license:asl2.0)))
1805
1806(define-public python2-betamax-matchers
1807 (package-with-python2 python-betamax-matchers))
1808
1809(define-public python-s3transfer
1810 (package
1811 (name "python-s3transfer")
bda82eff 1812 (version "0.1.13")
1b2f753d
LC
1813 (source (origin
1814 (method url-fetch)
1815 (uri (pypi-uri "s3transfer" version))
1816 (sha256
1817 (base32
bda82eff 1818 "1harvyn1s8v54n1w5h7c0lg4bgjh68aylhg28s8n174q53h1ip4h"))))
1b2f753d
LC
1819 (build-system python-build-system)
1820 (arguments
1821 `(#:phases
1822 (modify-phases %standard-phases
1823 (replace 'check
1824 (lambda _
1825 ;; 7 of the 'integration' tests require network access or login
1826 ;; credentials.
12adfdf0
TGR
1827 (invoke "nosetests" "--exclude=integration")
1828 #t)))))
1b2f753d
LC
1829 (native-inputs
1830 `(("python-docutils" ,python-docutils)
1831 ("python-mock" ,python-mock)
1832 ("python-nose" ,python-nose)))
1833 (propagated-inputs
1834 `(("python-botocore" ,python-botocore)))
1835 (synopsis "Amazon S3 Transfer Manager")
1836 (description "S3transfer is a Python library for managing Amazon S3
1837transfers.")
1838 (home-page "https://github.com/boto/s3transfer")
1839 (license license:asl2.0)
1840 (properties `((python2-variant . ,(delay python2-s3transfer))))))
1841
1842(define-public python2-s3transfer
1843 (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
1844 (package
1845 (inherit base)
1846 (native-inputs
1847 `(("python2-futures" ,python2-futures)
1848 ,@(package-native-inputs base))))))
1849
1850(define-public python-flask-restful
1851 (package
1852 (name "python-flask-restful")
1853 (version "0.3.5")
1854 (source
1855 (origin
1856 (method url-fetch)
1857 (uri (pypi-uri "Flask-RESTful" version))
1858 (sha256
1859 (base32
1860 "0hjcmdb56b7z4bkw848lxfkyrpnkwzmqn2dgnlv12mwvjpzsxr6c"))))
1861 (build-system python-build-system)
1862 (propagated-inputs
1863 `(("python-aniso8601" ,python-aniso8601)
1864 ("python-flask" ,python-flask)
1865 ("python-pycrypto" ,python-pycrypto)
1866 ("python-pytz" ,python-pytz)))
1867 (native-inputs
1868 `(;; Optional dependency of Flask. Tests need it.
1869 ("python-blinker" ,python-blinker)
1870 ("python-mock" ,python-mock) ; For tests
1871 ("python-nose" ,python-nose) ; For tests
1872 ("python-sphinx" ,python-sphinx)))
1873 (home-page
1874 "https://www.github.com/flask-restful/flask-restful/")
1875 (synopsis
1876 "Flask module for creating REST APIs")
1877 (description
1878 "This package contains a Flask module for creating REST APIs.")
1879 (license license:bsd-3)))
1880
1881(define-public python-flask-basicauth
1882 (package
1883 (name "python-flask-basicauth")
1884 (version "0.2.0")
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (pypi-uri "Flask-BasicAuth" version))
1889 (sha256
1890 (base32
1891 "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
1892 (build-system python-build-system)
1893 (propagated-inputs
1894 `(("python-flask" ,python-flask)))
1895 (home-page
1896 "https://github.com/jpvanhal/flask-basicauth")
1897 (synopsis
1898 "HTTP basic access authentication for Flask")
1899 (description
1900 "This package provides HTTP basic access authentication for Flask.")
1901 (license license:bsd-3)))
1902
1903(define-public python-flask-sqlalchemy
1904 (package
1905 (name "python-flask-sqlalchemy")
1906 (version "2.1")
1907 (source
1908 (origin
1909 (method url-fetch)
1910 (uri (pypi-uri "Flask-SQLAlchemy" version))
1911 (sha256
1912 (base32
1913 "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
1914 (build-system python-build-system)
1915 (propagated-inputs
1916 `(("python-flask" ,python-flask)
1917 ("python-sqlalchemy" ,python-sqlalchemy)))
1918 (home-page
1919 "https://github.com/mitsuhiko/flask-sqlalchemy")
1920 (synopsis
1921 "Module adding SQLAlchemy support to your Flask application")
1922 (description
1923 "This package adds SQLAlchemy support to your Flask application.")
1924 (license license:bsd-3)))
1925
1926(define-public python-flask-restplus
1927 (package
1928 (name "python-flask-restplus")
1929 (version "0.9.2")
1930 (source
1931 (origin
1932 (method url-fetch)
1933 (uri (pypi-uri "flask-restplus" version))
1934 (sha256
1935 (base32
1936 "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
1937 (build-system python-build-system)
1938 (arguments
1939 '(#:tests? #f)) ; FIXME: 35/882 tests failing.
1940 ;; #:phases
1941 ;; (modify-phases %standard-phases
1942 ;; (replace 'check
1943 ;; (lambda _
12adfdf0
TGR
1944 ;; (invoke "nosetests")
1945 ;; #t)))))
1b2f753d
LC
1946 (propagated-inputs
1947 `(("python-aniso8601" ,python-aniso8601)
1948 ("python-flask" ,python-flask)
1949 ("python-jsonschema" ,python-jsonschema)
1950 ("python-pytz" ,python-pytz)
1951 ("python-six" ,python-six)))
1952 (native-inputs
1953 `(("python-tzlocal" ,python-tzlocal)
1954 ("python-blinker" ,python-blinker)
1955 ("python-nose" ,python-nose)
1956 ("python-rednose" ,python-rednose)))
1957 (home-page "https://github.com/noirbizarre/flask-restplus")
1958 (synopsis "Framework for documented API development with Flask")
1959 (description "This package provides a framework for API development with
1960the Flask web framework in Python. It is similar to package
1961@code{python-flask-restful} but supports the @code{python-swagger}
1962documentation builder.")
1963 (license license:expat)))
1964
1965(define-public python-flask-restful-swagger
1966 (package
1967 (name "python-flask-restful-swagger")
1968 (version "0.19")
1969 (source
1970 (origin
1971 (method url-fetch)
1972 (uri (pypi-uri "flask-restful-swagger" version))
1973 (sha256
1974 (base32
1975 "16msl8hd5xjmj833bpy264v98cpl5hkw5bgl5gf5vgndxbv3rm6v"))))
1976 (build-system python-build-system)
1977 (propagated-inputs
1978 `(("python-flask-restful" ,python-flask-restful)))
1979 (home-page "https://github.com/rantav/flask-restful-swagger")
1980 (synopsis "Extract Swagger specs from Flask-Restful projects")
1981 (description "This package lets you extract Swagger API documentation
1982specs from your Flask-Restful projects.")
1983 (license license:expat)))
1984
1985(define-public python2-flask-restful-swagger
1986 (package-with-python2 python-flask-restful-swagger))
1987
1988(define-public python-htmlmin
1989 (package
1990 (name "python-htmlmin")
05075433 1991 (version "0.1.12")
1b2f753d
LC
1992 (source
1993 (origin
1994 (method url-fetch)
1995 (uri (pypi-uri "htmlmin" version))
1996 (sha256
1997 (base32
05075433 1998 "0y51xhabw6x8jk8k93xl8vznshpz3jb6l28075r5sjip613fzhah"))))
1b2f753d 1999 (arguments
05075433 2000 `(#:tests? #f)) ; no tests
1b2f753d
LC
2001 (build-system python-build-system)
2002 (home-page "https://htmlmin.readthedocs.org/en/latest/")
2003 (synopsis "HTML minifier")
2004 (description "@code{htmlmin} is an HTML minifier that just works.
2005It comes with safe defaults and easily configurable options.")
2006 (license license:bsd-3)))
2007
2008(define-public python2-htmlmin
2009 (package-with-python2 python-htmlmin))
2010
2011(define-public python-flask-htmlmin
2012 (package
2013 (name "python-flask-htmlmin")
2014 (version "1.2")
2015 (source
2016 (origin
2017 (method url-fetch)
2018 (uri (pypi-uri "Flask-HTMLmin" version))
2019 (sha256
2020 (base32
2021 "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
2022 (propagated-inputs
2023 `(("python-flask" ,python-flask)
2024 ("python-htmlmin" ,python-htmlmin)))
2025 (build-system python-build-system)
2026 (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
2027 (synopsis "HTML response minifier for Flask")
2028 (description
2029 "Minify @code{text/html} MIME type responses when using @code{Flask}.")
2030 (license license:bsd-3)))
2031
2032(define-public python2-flask-htmlmin
2033 (package-with-python2 python-flask-htmlmin))
2034
2035(define-public python-flask-login
2036 (package
2037 (name "python-flask-login")
2038 (version "0.4.0")
2039 (source
2040 (origin
2041 (method url-fetch)
2042 (uri (string-append "https://github.com/maxcountryman/flask-login/archive/"
2043 version ".tar.gz"))
2044 (file-name (string-append name "-" version ".tar.gz"))
2045 (sha256
2046 (base32
2047 "1pdqp7a2gyb7k06xda004x0fi2w66s6kn2i0ndkqndmg12d83f9w"))))
2048 (arguments
2049 ;; Tests fail PEP8 compliance. See:
2050 ;; https://github.com/maxcountryman/flask-login/issues/340
2051 `(#:tests? #f))
2052 (build-system python-build-system)
2053 (home-page "https://github.com/maxcountryman/flask-login")
2054 (synopsis "User session management for Flask")
2055 (description
2056 "@code{Flask-Login} provides user session management for Flask. It
2057handles the common tasks of logging in, logging out, and remembering your
2058users' sessions over extended periods of time.")
2059 (license license:expat)))
2060
2061(define-public python2-flask-login
2062 (package-with-python2 python-flask-login))
2063
2064(define-public python-oauth2client
2065 (package
2066 (name "python-oauth2client")
2067 (version "4.0.0")
2068 (source
2069 (origin
2070 (method url-fetch)
2071 (uri (pypi-uri "oauth2client" version))
2072 (sha256
2073 (base32
2074 "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
2075 (build-system python-build-system)
2076 (arguments
2077 `(#:tests? #f))
2078 (propagated-inputs
2079 `(("python-httplib2" ,python-httplib2)
2080 ("python-pyasn1" ,python-pyasn1)
2081 ("python-pyasn1-modules" ,python-pyasn1-modules)
2082 ("python-rsa" ,python-rsa)
2083 ("python-six" ,python-six)))
9be5ecdf 2084 (home-page "https://github.com/google/oauth2client/")
1b2f753d
LC
2085 (synopsis "OAuth 2.0 client library")
2086 (description "@code{python-oauth2client} provides an OAuth 2.0 client
2087library for Python")
2088 (license license:asl2.0)))
2089
1ceca46b
MO
2090(define-public python2-oauth2client
2091 (package-with-python2 python-oauth2client))
2092
1b2f753d
LC
2093(define-public python-flask-oidc
2094 (package
2095 (name "python-flask-oidc")
2096 (version "1.1.1")
2097 (source
2098 (origin
2099 (method url-fetch)
2100 (uri (pypi-uri "flask-oidc" version))
2101 (sha256
2102 (base32
2103 "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
2104 (build-system python-build-system)
2105 (propagated-inputs
2106 `(("python-flask" ,python-flask)
2107 ("python-itsdangerous" ,python-itsdangerous)
2108 ("python-oauth2client" ,python-oauth2client)
2109 ("python-six" ,python-six)))
2110 (native-inputs
2111 `(("python-nose" ,python-nose)
2112 ("python-mock" ,python-mock)))
2113 (home-page "https://github.com/puiterwijk/flask-oidc")
2114 (synopsis "OpenID Connect extension for Flask")
2115 (description "@code{python-flask-oidc} provides an OpenID Connect extension
2116for Flask.")
2117 (license license:bsd-2)))
2118
2119(define-public python-webassets
2120 (package
2121 (name "python-webassets")
2122 (version "0.12.1")
2123 (source
2124 (origin
2125 (method url-fetch)
2126 (uri (pypi-uri "webassets" version))
2127 (sha256
2128 (base32
2129 "1nrqkpb7z46h2b77xafxihqv3322cwqv6293ngaky4j3ff4cing7"))))
2130 (build-system python-build-system)
2131 (native-inputs
2132 `(("python-jinja2" ,python-jinja2)
2133 ("python-mock" ,python-mock)
2134 ("python-nose" ,python-nose)
2135 ("python-pytest" ,python-pytest)))
2136 (home-page "https://github.com/miracle2k/webassets")
2137 (synopsis "Media asset management")
2138 (description "Merges, minifies and compresses Javascript and CSS files,
2139supporting a variety of different filters, including YUI, jsmin, jspacker or
2140CSS tidy. Also supports URL rewriting in CSS files.")
2141 (license license:bsd-2)))
2142
2143(define-public python-cssmin
2144 (package
2145 (name "python-cssmin")
2146 (version "0.2.0")
2147 (source
2148 (origin
2149 (method url-fetch)
2150 (uri (pypi-uri "cssmin" version))
2151 (sha256
2152 (base32
2153 "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
2154 (build-system python-build-system)
2155 (home-page "https://github.com/zacharyvoase/cssmin")
2156 (synopsis "Python port of the YUI CSS Compressor")
2157 (description "Python port of the YUI CSS Compressor.")
2158 (license (list license:expat license:bsd-3))))
2159
2160(define-public python2-cssmin
2161 (package-with-python2 python-cssmin))
2162
2163(define-public python-elasticsearch
2164 (package
2165 (name "python-elasticsearch")
aabcb6e5 2166 (version "6.1.1")
1b2f753d
LC
2167 (source
2168 (origin
2169 (method url-fetch)
2170 (uri (pypi-uri "elasticsearch" version))
2171 (sha256
2172 (base32
aabcb6e5 2173 "1kjxl45yvvgfb5fmamx0kfsfg9pzphiqrwbkns3s28r1w7ya74cd"))))
1b2f753d
LC
2174 (build-system python-build-system)
2175 (native-inputs
2176 `(("python-mock" ,python-mock)
2177 ("python-nosexcover" ,python-nosexcover)
2178 ("python-pyaml" ,python-pyaml)
2179 ("python-requests" ,python-requests)))
2180 (propagated-inputs
2181 `(("urllib3" ,python-urllib3)))
2182 (arguments
2183 ;; tests require the test_elasticsearch module but it is not distributed.
2184 `(#:tests? #f))
2185 (home-page "https://github.com/elastic/elasticsearch-py")
2186 (synopsis "Low-level client for Elasticsearch")
2187 (description "Official low-level client for Elasticsearch. Its goal is to
2188provide common ground for all Elasticsearch-related code in Python; because of
2189this it tries to be opinion-free and very extendable.")
2190 (license license:expat)))
2191
2192(define-public python2-elasticsearch
2193 (package-with-python2 python-elasticsearch))
2194
2195(define-public python-flask-script
2196 (package
2197 (name "python-flask-script")
6a192184 2198 (version "2.0.6")
1b2f753d
LC
2199 (source
2200 (origin
2201 (method url-fetch)
2202 (uri (pypi-uri "Flask-Script" version))
2203 (sha256
2204 (base32
6a192184 2205 "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4"))))
1b2f753d
LC
2206 (build-system python-build-system)
2207 (propagated-inputs
2208 `(("python-flask" ,python-flask)
2209 ("python-argcomplete" ,python-argcomplete)
2210 ("python-werkzeug" ,python-werkzeug)))
2211 (native-inputs
2212 `(("python-pytest" ,python-pytest)))
2213 (home-page
9be5ecdf 2214 "https://github.com/smurfix/flask-script")
1b2f753d
LC
2215 (synopsis "Scripting support for Flask")
2216 (description "The Flask-Script extension provides support for writing
2217external scripts in Flask. This includes running a development server,
2218a customised Python shell, scripts to set up your database, cronjobs,
2219and other command-line tasks that belong outside the web application
2220itself.")
2221 (license license:bsd-3)))
2222
2223(define-public python2-flask-script
2224 (package-with-python2 python-flask-script))
2225
2226(define-public python-flask-migrate
2227 (package
2228 (name "python-flask-migrate")
2229 (version "2.0.3")
2230 (source
2231 (origin
2232 (method url-fetch)
2233 (uri (pypi-uri "Flask-Migrate" version))
2234 (sha256
2235 (base32
2236 "107x78lkqsnbg92dld3dkagg07jvchp3ib3y0sivc4ipz6n1y7rk"))))
2237 (build-system python-build-system)
2238 (propagated-inputs
2239 `(("python-flask" ,python-flask)
2240 ("python-alembic" ,python-alembic)
2241 ("python-sqlalchemy" ,python-sqlalchemy)
2242 ("python-flask-script" ,python-flask-script)
2243 ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
9be5ecdf 2244 (home-page "https://github.com/miguelgrinberg/flask-migrate/")
1b2f753d
LC
2245 (synopsis "SQLAlchemy database migrations for Flask programs using
2246Alembic")
2247 (description "This package contains SQLAlchemy database migration tools
2248for Flask programs that are using @code{python-alembic}.")
2249 (license license:expat)))
2250
2251(define-public python2-flask-migrate
2252 (package-with-python2 python-flask-migrate))
2253
2254(define-public python-genshi
2255 (package
2256 (name "python-genshi")
2257 (version "0.7")
2258 (source
2259 (origin
2260 (method url-fetch)
2261 (uri (string-append
2262 "https://ftp.edgewall.org/pub/genshi/Genshi-"
2263 version ".tar.gz"))
2264 (patches
2265 (search-patches
2266 ;; The first 4 patches are in the master branch upstream.
2267 ;; See this as a reference https://genshi.edgewall.org/ticket/582
2268 ;; The last 2 are NOT in any branch.
2269 ;; They were sent as attachments to a ticket opened at
2270 ;; https://genshi.edgewall.org/ticket/602#no1
2271 "python-genshi-stripping-of-unsafe-script-tags.patch"
2272 "python-genshi-disable-speedups-on-python-3.3.patch"
2273 "python-genshi-isstring-helper.patch"
2274 "python-genshi-add-support-for-python-3.4-AST.patch"
2275 "python-genshi-fix-tests-on-python-3.5.patch"
2276 "python-genshi-buildable-on-python-2.7.patch"))
2277 (sha256
2278 (base32
2279 "0lkkbp6fbwzv0zda5iqc21rr7rdldkwh3hfabfjl9i4bwq14858x"))))
2280 (build-system python-build-system)
2281 (home-page "https://genshi.edgewall.org/")
2282 (synopsis "Toolkit for generation of output for the web")
2283 (description "Genshi is a Python library that provides an integrated set
2284of components for parsing, generating, and processing HTML, XML or other
2285textual content for output generation on the web.")
2286 (license license:bsd-3)))
2287
2288;; The linter here claims that patch file names should start with the package
2289;; name. But, in this case the patches are inherited from python-genshi with
2290;; the "python-genshi-" prefix instead of "python2-genshi-".
2291(define-public python2-genshi
2292 (package-with-python2 python-genshi))
2293
2294(define-public python-flask-principal
2295 (package
2296 (name "python-flask-principal")
2297 (version "0.4.0")
2298 (source
2299 (origin
2300 (method url-fetch)
2301 (uri (pypi-uri "Flask-Principal" version))
2302 (sha256
2303 (base32
2304 "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
2305 (build-system python-build-system)
2306 (propagated-inputs
2307 `(("python-blinker" ,python-blinker)))
2308 (native-inputs
2309 `(("python-flask" ,python-flask)
2310 ("python-nose" ,python-nose)))
2311 (home-page "http://packages.python.org/Flask-Principal/")
2312 (synopsis "Identity management for Flask")
2313 (description "@code{flask_principal} is a identity management library for
2314Flask. It supports managing both authentication and authorization data in a
2315thread-local variable.")
2316 (license license:expat)))
2317
2318(define-public python2-flask-principal
2319 (package-with-python2 python-flask-principal))
2320
2321(define-public python-flask-httpauth
2322 (package
2323 (name "python-flask-httpauth")
2324 (version "3.2.3")
2325 (source
2326 (origin
2327 (method url-fetch)
2328 (uri (pypi-uri "Flask-HTTPAuth" version))
2329 (sha256
2330 (base32
2331 "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
2332 (build-system python-build-system)
2333 (native-inputs
2334 `(("python-flask" ,python-flask)))
9be5ecdf 2335 (home-page "https://github.com/miguelgrinberg/flask-httpauth/")
1b2f753d
LC
2336 (synopsis "Basic and Digest HTTP authentication for Flask routes")
2337 (description "@code{flask_httpauth} provides Basic and Digest HTTP
2338authentication for Flask routes.")
2339 (license license:expat)))
2340
2341(define-public python2-flask-httpauth
2342 (package-with-python2 python-flask-httpauth))
2343
2344(define-public python-uritemplate
2345 (package
2346 (name "python-uritemplate")
2347 (version "3.0.0")
2348 (source
2349 (origin
2350 (method url-fetch)
2351 (uri (pypi-uri "uritemplate" version))
2352 (sha256
2353 (base32
2354 "0781gm9g34wa0asc19dx81ng0nqq07igzv3bbvdqmz13pv7469n0"))))
2355 (build-system python-build-system)
2356 (home-page "https://uritemplate.readthedocs.org")
2357 (synopsis "Library to deal with URI Templates")
2358 (description "@code{uritemplate} provides Python library to deal with URI
2359Templates.")
2360 (license license:bsd-2)))
2361
2362(define-public python2-uritemplate
2363 (package-with-python2 python-uritemplate))
2364
589e3f4e
LC
2365(define-public python-publicsuffix
2366 (package
2367 (name "python-publicsuffix")
2368 (version "1.1.0")
2369 (source (origin
2370 (method url-fetch)
2371 (uri (pypi-uri "publicsuffix" version))
2372 (sha256
2373 (base32
2374 "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
2375 (build-system python-build-system)
2376 (arguments
2377 `(#:tests? #f)) ; tests use the internet
2378 (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
2379 (synopsis "Get suffix for a domain name")
2380 (description "Get a public suffix for a domain name using the Public Suffix
2381List.")
2382 (license license:expat)))
2383
2384(define-public python2-publicsuffix
2385 (package-with-python2 python-publicsuffix))
2386
2387(define-public python-publicsuffix2
2388 (package
2389 (name "python-publicsuffix2")
2390 (version "2.20160818")
2391 (source
2392 (origin
2393 (method url-fetch)
2394 (uri (pypi-uri "publicsuffix2" version ".tar.bz2"))
2395 (sha256
2396 (base32
2397 "1bb55yka9vkn7i6y1kjzxa516kh6v4gsrxa90w5wdz5p5n968r68"))))
2398 (build-system python-build-system)
2399 (arguments
2400 '(#:tests? #f)) ; The test suite requires network access.
2401 (home-page "https://github.com/pombredanne/python-publicsuffix2")
2402 (synopsis "Get a public suffix for a domain name using the Public Suffix List")
2403 (description "Get a public suffix for a domain name using the Public Suffix
2404List. Forked from and using the same API as the publicsuffix package.")
2405 (license (list license:expat license:mpl2.0))))
2406
2407(define-public python2-publicsuffix2
2408 (package-with-python2 python-publicsuffix2))
98c6a025
RW
2409
2410(define-public python-werkzeug
2411 (package
2412 (name "python-werkzeug")
2413 (version "0.11.15")
2414 (source
2415 (origin
2416 (method url-fetch)
2417 (uri (pypi-uri "Werkzeug" version))
2418 (sha256
2419 (base32
2420 "1h5wycw8yj7q0grqsjnsqflmrlsdagvl2j4dsgdncci6mjc7fpa5"))))
2421 (build-system python-build-system)
2422 (native-inputs
2423 `(("python-pytest" ,python-pytest)))
2424 (home-page "http://werkzeug.pocoo.org/")
2425 (synopsis "Utilities for WSGI applications")
2426 (description "One of the most advanced WSGI utility modules. It includes a
2427powerful debugger, full-featured request and response objects, HTTP utilities to
2428handle entity tags, cache control headers, HTTP dates, cookie handling, file
2429uploads, a powerful URL routing system and a bunch of community-contributed
2430addon modules.")
2431 (license license:x11)))
2432
2433(define-public python2-werkzeug
2434 (package-with-python2 python-werkzeug))
2435
2436(define-public python-bottle
2437 (package
2438 (name "python-bottle")
2439 (version "0.12.13")
2440 (source
2441 (origin
2442 (method url-fetch)
2443 (uri (pypi-uri "bottle" version))
2444 (sha256
2445 (base32
2446 "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
2447 (build-system python-build-system)
2448 (home-page "http://bottlepy.org/")
2449 (synopsis "WSGI framework for small web-applications.")
2450 (description "@code{python-bottle} is a WSGI framework for small web-applications.")
2451 (license license:expat)))
2452
2453(define-public python2-bottle
2454 (package-with-python2 python-bottle))
2455
2456(define-public python-wtforms
2457 (package
2458 (name "python-wtforms")
2459 (version "2.1")
2460 (source
2461 (origin
2462 (method url-fetch)
2463 (uri (pypi-uri "WTForms" version ".zip"))
2464 (sha256
2465 (base32
2466 "0vyl26y9cg409cfyj8rhqxazsdnd0jipgjw06civhrd53yyi1pzz"))))
2467 (build-system python-build-system)
2468 (arguments
2469 '(#:phases
2470 (modify-phases %standard-phases
2471 (add-after 'unpack 'remove-django-test
2472 ;; Don't fail the tests when the inputs for the optional tests cannot be found.
2473 (lambda _
2474 (substitute*
2475 "tests/runtests.py"
2476 (("'ext_django.tests', 'ext_sqlalchemy', 'ext_dateutil', 'locale_babel'") "")
2477 (("sys.stderr.write(\"### Disabled test '%s', dependency not found\n\" % name)") ""))
2478 #t)))))
2479 (native-inputs
2480 `(("unzip" ,unzip)))
2481 (home-page "http://wtforms.simplecodes.com/")
2482 (synopsis
2483 "Form validation and rendering library for Python web development")
2484 (description
2485 "WTForms is a flexible forms validation and rendering library
2486for Python web development. It is very similar to the web form API
2487available in Django, but is a standalone package.")
2488 (license license:bsd-3)))
2489
2490(define-public python2-wtforms
2491 (package-with-python2 python-wtforms))
2492
2493(define-public python-paste
2494 (package
2495 (name "python-paste")
2496 (version "2.0.3")
2497 (source
2498 (origin
2499 (method url-fetch)
2500 (uri (pypi-uri "Paste" version))
2501 (sha256
2502 (base32
2503 "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
2504 (patches (search-patches "python-paste-remove-website-test.patch"
2505 "python-paste-remove-timing-test.patch"))))
2506 (build-system python-build-system)
2507 (native-inputs
2508 `(("python-nose" ,python-nose)))
2509 (propagated-inputs
2510 `(("python-six" ,python-six)))
2511 (home-page "http://pythonpaste.org")
2512 (synopsis
2513 "Python web development tools, focusing on WSGI")
2514 (description
2515 "Paste provides a variety of web development tools and middleware which
2516can be nested together to build web applications. Paste's design closely
2517follows ideas flowing from WSGI (Web Standard Gateway Interface).")
2518 (license license:expat)))
2519
2520(define-public python2-paste
2521 (package-with-python2 python-paste))
2522
2523(define-public python-pastescript
2524 (package
2525 (name "python-pastescript")
2526 (version "2.0.2")
2527 (source
2528 (origin
2529 (method url-fetch)
2530 (uri (pypi-uri "PasteScript" version))
2531 (sha256
2532 (base32
2533 "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
2534 (build-system python-build-system)
2535 (native-inputs
2536 `(("python-nose" ,python-nose)))
2537 (propagated-inputs
2538 `(("python-paste" ,python-paste)
2539 ("python-pastedeploy" ,python-pastedeploy)))
2540 (home-page "http://pythonpaste.org/script/")
2541 (arguments
2542 '(;; Unfortunately, this requires the latest unittest2,
2543 ;; but that requires traceback2 which requires linecache2 which requires
2544 ;; unittest2. So we're skipping tests for now.
2545 ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
2546 ;; so in theory we could get around this situation somehow.)
2547 #:tests? #f))
2548 (synopsis
2549 "Pluggable command line tool for serving web applications and more")
2550 (description
2551 "PasteScript is a plugin-friendly command line tool which provides a
2552variety of features, from launching web applications to bootstrapping project
2553layouts.")
2554 (license license:expat)))
2555
2556(define-public python2-pastescript
2557 (package-with-python2 python-pastescript))
c5964611
2558
2559(define-public python2-urlgrabber
2560 (package
2561 (name "python2-urlgrabber")
2562 (version "3.10.2")
2563 (source
2564 (origin
2565 (method url-fetch)
2566 (uri (pypi-uri "urlgrabber" version))
2567 (sha256
2568 (base32 "0w1h7hlsq406bxfy2pn4i9bd003bwl0q9b7p03z3g6yl0d21ddq5"))))
2569 (build-system python-build-system)
2570 (arguments `(#:python ,python-2)) ; urlgrabber supports python2 only
2571 (home-page "http://urlgrabber.baseurl.org")
2572 (synopsis "High-level cross protocol url-grabber")
2573 (description "@code{urlgrabber} is Python2 library that unifies access to
2574files available on web, FTP or locally. It supports HTTP, FTP and file://
2575protocols, it supports features like HTTP keep-alive, reget, throttling and
2576more.")
2577 (license license:lgpl2.1+)))
2578
85ccc0c2
NG
2579(define-public python-pycares
2580 (package
2581 (name "python-pycares")
2582 (version "2.3.0")
2583 (source
2584 (origin
2585 (method url-fetch)
2586 (uri (pypi-uri "pycares" version))
2587 (sha256
2588 (base32
2589 "0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n"))))
2590 (build-system python-build-system)
2591 (arguments
2592 `(#:tests? #f)) ;tests require internet access
2593 (home-page "http://github.com/saghul/pycares")
2594 (synopsis "Python interface for @code{c-ares}")
2595 (description "@code{pycares} is a Python module which provides an
2596interface to @code{c-ares}, a C library that performs DNS requests and
2597name resolutions asynchronously.")
2598 (license license:expat)))
2eccb414
NG
2599
2600(define-public python-yarl
2601 (package
2602 (name "python-yarl")
2603 (version "1.1.1")
2604 (source
2605 (origin
2606 (method url-fetch)
2607 (uri (pypi-uri "yarl" version))
2608 (sha256
2609 (base32
2610 "1s6z13g8vgxfkkqwhn6imnm7pl7ky9arv4jygnn6bcndcbidg7d6"))))
2611 (build-system python-build-system)
2612 (native-inputs
2613 `(("python-pytest" ,python-pytest)
2614 ("python-pytest-runner" ,python-pytest-runner)))
2615 (propagated-inputs
2616 `(("python-idna" ,python-idna)
2617 ("python-multidict" ,python-multidict)))
2618 (home-page "https://github.com/aio-libs/yarl/")
2619 (synopsis "Yet another URL library")
2620 (description "@code{yarl} module provides handy @code{URL} class
2621for URL parsing and changing.")
2622 (license license:asl2.0)))
961bcdf5
MO
2623
2624(define-public python-google-api-client
2625 (package
2626 (name "python-google-api-client")
2627 (version "1.6.7")
2628 (source
2629 (origin
2630 (method url-fetch)
2631 (uri (pypi-uri "google-api-python-client" version))
2632 (sha256
2633 (base32
2634 "1wpbbbxfpy9mwxdy3kn352cb590ladv574j1aa2l4grjdqw3ln05"))))
2635 (build-system python-build-system)
2636 (arguments
2637 '(#:tests? #f)) ; tests require internet access
2638 (native-inputs
2639 `(("python-httplib2" ,python-httplib2)
2640 ("python-six" ,python-six)
2641 ("python-oauth2client" ,python-oauth2client)
2642 ("python-uritemplate" ,python-uritemplate)))
2643 (home-page "https://github.com/google/google-api-python-client")
2644 (synopsis "Core Python library for accessing Google APIs")
2645 (description "Python client library for Google's discovery based APIs")
2646 (license license:asl2.0)))
2647
2648(define-public python2-google-api-client
2649 (package-with-python2 python-google-api-client))