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