aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/python.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/python.scm')
-rw-r--r--gnu/packages/python.scm462
1 files changed, 386 insertions, 76 deletions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index fd423d3112..1492e0f369 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,17 +23,19 @@
;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
-;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
+;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1079,14 +1081,14 @@ Python file, so it can be easily copied into your project.")
(define-public python-dateutil
(package
(name "python-dateutil")
- (version "2.5.2")
+ (version "2.5.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-dateutil" version))
(sha256
(base32
- "0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
+ "1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
(build-system python-build-system)
(propagated-inputs
`(("python-six" ,python-six)))
@@ -1186,14 +1188,14 @@ under several distributions that's hard or impossible to figure out.")
(define-public python2-pysqlite
(package
(name "python2-pysqlite")
- (version "2.8.1")
+ (version "2.8.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pysqlite" version))
(sha256
(base32
- "0rm0zqyb363y6wljhfmbxs16jjv7p8nk1d8zgq9sdwj6js7y3jkm"))))
+ "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
(build-system python-build-system)
(inputs
`(("sqlite" ,sqlite)))
@@ -1315,7 +1317,7 @@ Python 3.3+.")
(arguments `(#:python ,python-2
#:tests? #f)) ; invalid command "test"
(home-page "https://fedorahosted.org/dogtail/")
- (synopsis "GUI test tool and automation framework written in ​Python")
+ (synopsis "GUI test tool and automation framework written in Python")
(description
"Dogtail is a GUI test tool and automation framework written in Python.
It uses Accessibility (a11y) technologies to communicate with desktop
@@ -2121,14 +2123,14 @@ protocol.")
(define python-pbr-minimal
(package
(name "python-pbr-minimal")
- (version "1.8.1")
+ (version "1.10.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pbr" version))
(sha256
(base32
- "0jcny36cf3s8ar5r4a575npz080hndnrfs4np1fqhv0ym4k7c4p2"))))
+ "177kd9kbv1hvf2ban7l3x9ymzbi1md4hkaymwbgnz7ihf312hr0q"))))
(build-system python-build-system)
(arguments
`(#:tests? #f))
@@ -2282,10 +2284,11 @@ executed.")
(propagated-inputs
`(("python-coverage" ,python-coverage)))
(home-page "https://github.com/schlamar/cov-core")
- (synopsis "plugin core for use by pytest-cov, nose-cov and nose2-cov")
+ (synopsis "Coverage plugin core for pytest-cov, nose-cov and nose2-cov")
(description
- "This is a library package for use by pytest-cov, nose-cov and nose2-cov.
-It is useful for developing coverage plugins for these testing frameworks.")
+ "This is a library package for use by @code{pytest-cov}, @code{nose-cov}
+and @code{nose2-cov}. It is useful for developing coverage plugins for these
+testing frameworks.")
(license license:expat)))
(define-public python2-cov-core
@@ -2389,16 +2392,15 @@ files.")
(define-public python-certifi
(package
(name "python-certifi")
- (version "2016.8.31")
+ (version "2017.1.23")
(source (origin
(method url-fetch)
(uri (pypi-uri "certifi" version))
(sha256
(base32
- "06c9dcyv8ss050gkv5xjivbxhm6qm0s9vzy4r33wqabgv118lw7p"))))
+ "1klrzl3hgvcf2mjk00g0k3kk1p2z27vzwnxivwar4vhjmjvpz1w1"))))
(build-system python-build-system)
- (arguments `(#:tests? #f)) ; no tests
- (home-page "http://python-requests.org/")
+ (home-page "https://certifi.io/")
(synopsis "Python CA certificate bundle")
(description
"Certifi is a Python library that contains a CA certificate bundle, which
@@ -2451,14 +2453,14 @@ with sensible defaults out of the box.")
(define-public python-wheel
(package
(name "python-wheel")
- (version "0.29.0")
+ (version "0.30.0a0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "wheel" version))
(sha256
(base32
- "0j0n38hg1jvrmyy68f9ikvzq1gs9g0sx4ws7maf8wi3bwbbqmfqy"))))
+ "1nm6mn8isny0hr86rhbfrpfj867c0phf001xgsd69xfp9ady1wwq"))))
(build-system python-build-system)
(native-inputs
`(("python-jsonschema" ,python-jsonschema)
@@ -2612,13 +2614,13 @@ cutting and pasting that code over and over.")
(define-public python-unidecode
(package
(name "python-unidecode")
- (version "0.04.18")
+ (version "0.04.20")
(source (origin
(method url-fetch)
(uri (pypi-uri "Unidecode" version))
(sha256
(base32
- "12hhblqy1ajvidm38im4171x4arg83pfmziyn53nizp29p3m14gi"))))
+ "1q00i8gpsq3d9r0q8wk4b290fxl0kqlsdk7iadvli45in6s1hi7d"))))
(build-system python-build-system)
(home-page "https://pypi.python.org/pypi/Unidecode")
(synopsis "ASCII transliterations of Unicode text")
@@ -3267,15 +3269,13 @@ mining and data analysis.")
(define-public python-redis
(package
(name "python-redis")
- (version "2.10.3")
+ (version "2.10.5")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/r/redis/redis-"
- version ".tar.gz"))
+ (uri (pypi-uri "redis" version))
(sha256
- (base32 "1701qjwn4n05q90fdg4bsg96s27xf5s4hsb4gxhv3xk052q3gyx4"))))
+ (base32 "0csmrkxb29x7xs9b51zplwkkq2hwnbh9jns1g85dykn5rxmaxysx"))))
(build-system python-build-system)
;; Tests require a running Redis server
(arguments '(#:tests? #f))
@@ -4133,14 +4133,14 @@ Python code against some of the style conventions in
(define-public python-orderedmultidict
(package
(name "python-orderedmultidict")
- (version "0.7.10")
+ (version "0.7.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "orderedmultidict" version))
(sha256
(base32
- "1gvqk0jd432wsn88kq4svad68xz3r012jfpnhh9in7bqrkyxidky"))))
+ "0dls862ibm7qbq4fnvwx0xn1v9hwyzywbff8xjjdr42dd75208yw"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -4272,14 +4272,14 @@ You might also want to install the following optional dependencies:
(define-public python-alembic
(package
(name "python-alembic")
- (version "0.8.7")
+ (version "0.8.10")
(source
(origin
(method url-fetch)
(uri (pypi-uri "alembic" version))
(sha256
(base32
- "0ias6fdzwr2s220fnjspkdgm9510bd0cnap0hx5y4zy4srba9f3z"))))
+ "06br9sfqypnjlal6fsbnky3zb0askwcn3diz8k3kwa0qcblm0fqf"))))
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)
@@ -4299,6 +4299,34 @@ SQLAlchemy Database Toolkit for Python.")
(define-public python2-alembic
(package-with-python2 python-alembic))
+(define-public python-autopep8
+ (package
+ (name "python-autopep8")
+ (version "1.2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "autopep8" version))
+ (sha256
+ (base32
+ "18parm383lfn42a00wklv3qf20p4v277f1x3cn58x019dqk1xqrq"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pep8" ,python-pep8)))
+ (home-page "https://github.com/hhatto/autopep8")
+ (synopsis "Format Python code according to the PEP 8 style guide")
+ (description
+ "@code{autopep8} automatically formats Python code to conform to
+the PEP 8 style guide. It uses the pycodestyle utility to determine
+what parts of the code needs to be formatted. @code{autopep8} is
+capable of fixing most of the formatting issues that can be reported
+by pycodestyle.")
+ (license (license:non-copyleft
+ "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
+
+(define-public python2-autopep8
+ (package-with-python2 python-autopep8))
+
(define-public python-distutils-extra
(package
(name "python-distutils-extra")
@@ -5297,6 +5325,24 @@ features useful for text console applications.")
(define-public python2-urwid
(package-with-python2 python-urwid))
+(define-public python-openid
+ (package
+ (name "python-openid")
+ (version "3.0.10")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "python3-openid" version))
+ (sha256
+ (base32
+ "1x3nh3fycqfn43jp5j5pb4q4y2jxp4mdka4absaa3bc0078qd758"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/necaris/python3-openid")
+ (synopsis "OpenID support for servers and consumers")
+ (description "This library provides OpenID authentication for Python, both
+for clients and servers.")
+ (license license:asl2.0)))
+
(define-public python2-openid
(package
(name "python2-openid")
@@ -5672,13 +5718,13 @@ Python style, together with a fast and comfortable execution environment.")
(define-public python-seaborn
(package
(name "python-seaborn")
- (version "0.7.0")
+ (version "0.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "seaborn" version))
(sha256
- (base32 "0ibi3xsfm2kysph61mnfy0pf8d5rkgxgrdb0z9nbizgcgdsb5a0m"))))
+ (base32 "0pawrqc3mxpwd5g9pvi9gba02637bh5c8ldpp8izfwpfn52469zs"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; Tests requires a running X11 server.
@@ -6186,20 +6232,39 @@ complexity of Python source code.")
(define-public python2-flake8-2.2.4
(package-with-python2 python-flake8-2.2.4))
+(define-public python-flake8-polyfill
+ (package
+ (name "python-flake8-polyfill")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "flake8-polyfill" version))
+ (sha256
+ (base32
+ "02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
+ (build-system python-build-system)
+ (home-page "https://gitlab.com/pycqa/flake8-polyfill")
+ (synopsis "Polyfill package for Flake8 plugins")
+ (description
+ "This package that provides some compatibility helpers for Flake8
+plugins that intend to support Flake8 2.x and 3.x simultaneously.")
+ (license license:expat)))
+
+(define-public python2-flake8-polyfill
+ (package-with-python2 python-flake8-polyfill))
+
(define-public python-mistune
(package
(name "python-mistune")
- (version "0.7")
+ (version "0.7.3")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/m/mistune/mistune-"
- version
- ".tar.gz"))
+ (uri (pypi-uri "mistune" version))
(sha256
(base32
- "17zqjp9m4d1w3jf2rbbq5xshcw24q1vlcv24gkgfqqyyymajxahx"))))
+ "04xpk1zvslhq3xpnf01g3ag0dy9wfv4z28p093r8k49vvxlyil11"))))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)
@@ -6278,6 +6343,65 @@ pseudo terminal (pty), and interact with both the process and its pty.")
(define-public python2-ptyprocess
(package-with-python2 python-ptyprocess))
+(define-public python-cram
+ (package
+ (name "python-cram")
+ (version "0.7")
+ (home-page "https://bitheap.org/cram/")
+ (source (origin
+ (method url-fetch)
+ (uri (list (string-append home-page "cram-"
+ version ".tar.gz")
+ (pypi-uri "cram" version)))
+ (sha256
+ (base32
+ "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-source
+ (lambda _
+ (substitute* (find-files "cram" ".*\\.py$")
+ ;; Replace default shell path.
+ (("/bin/sh") (which "sh")))
+ (substitute* (find-files "tests" ".*\\.t$")
+ (("md5") "md5sum")
+ (("/bin/bash") (which "bash"))
+ (("/bin/sh") (which "sh")))
+ (substitute* "cram/_test.py"
+ ;; This hack works around a bug triggered by substituting
+ ;; the /bin/sh paths. "tests/usage.t" compares the output of
+ ;; "cram -h", which breaks the output at 80 characters. This
+ ;; causes the line showing the default shell to break into two
+ ;; lines, but the test expects a single line...
+ (("env\\['COLUMNS'\\] = '80'")
+ "env['COLUMNS'] = '160'"))
+ #t))
+ (delete 'check)
+ (add-after 'install 'check
+ ;; The test phase uses the built library and executable.
+ ;; It's easier to run it after install since the build
+ ;; directory contains version-specific PATH.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (setenv "PATH" (string-append (getenv "PATH") ":"
+ (assoc-ref outputs "out") "/bin"))
+ (zero? (system* "make" "test")))))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-coverage" ,python-coverage)
+ ("which" ,which)))
+ (synopsis "Simple testing framework for command line applications")
+ (description
+ "Cram is a functional testing framework for command line applications.
+Cram tests look like snippets of interactive shell sessions. Cram runs each
+command and compares the command output in the test with the command’s actual
+output.")
+ (license license:gpl2+)))
+
+(define-public python2-cram
+ (package-with-python2 python-cram))
+
(define-public python-terminado
(package
(name "python-terminado")
@@ -7171,16 +7295,14 @@ serve the same purpose: provide Python bindings for libmagic.")))
(define-public python-debian
(package
(name "python-debian")
- (version "0.1.23")
+ (version "0.1.28")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://pypi.python.org/packages/source/p/python-debian/python-debian-"
- version ".tar.gz"))
+ (uri (pypi-uri name version))
(sha256
(base32
- "193faznwnjc3n5991wyzim6h9gyq1zxifmfrnpm3avgkh7ahyynh"))))
+ "0i15f0xzx679sd0ldq2sls9pnnps9fv6vhqvnv9dzf4qhma42i0y"))))
(build-system python-build-system)
(propagated-inputs
`(("python-six" ,python-six)))
@@ -8487,13 +8609,13 @@ processes across test runs.")
(define-public python-icalendar
(package
(name "python-icalendar")
- (version "3.11.1")
+ (version "3.11.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "icalendar" version))
(sha256
(base32
- "1bvi7rzh7scl4nmgj2n2cy7k0v3p29y15cqy2hcdnfq9mnhdr63y"))))
+ "17rcy6rb9kqjf4p707ivmx7phjq7ngcz3bf7zriwxrqgrjagj7ag"))))
(build-system python-build-system)
(propagated-inputs
`(("python-dateutil" ,python-dateutil)
@@ -8805,16 +8927,16 @@ supports url redirection and retries, and also gzip and deflate decoding.")
(define-public python-colorama
(package
(name "python-colorama")
- (version "0.3.3")
+ (version "0.3.7")
(source
(origin
(method url-fetch)
(uri (pypi-uri "colorama" version))
(sha256
(base32
- "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb"))))
+ "0avqkn6362v7k2kg3afb35g4sfdvixjgy890clip4q174p9whhz0"))))
(build-system python-build-system)
- (synopsis "colored terminal text rendering for Python")
+ (synopsis "Colored terminal text rendering for Python")
(description "Colorama is a Python library for rendering colored terminal
text.")
(home-page "https://pypi.python.org/pypi/colorama")
@@ -8965,14 +9087,14 @@ interface to the Amazon Web Services (AWS) API.")
(define-public awscli
(package
(name "awscli")
- (version "1.11.35")
+ (version "1.11.43")
(source
(origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
- "0k6y8cg311bqak5x9pilg80w6f76dcbzm6xcdrw6rjnk6v4xwy70"))))
+ "1x94jmy8ygld8g4pf35zdankh4dx8g8qn3q9j3hrbawqw0vkrp3y"))))
(build-system python-build-system)
(propagated-inputs
`(("python-colorama" ,python-colorama)
@@ -8986,7 +9108,7 @@ interface to the Amazon Web Services (AWS) API.")
("python-sphinx" ,python-sphinx)
("python-tox" ,python-tox)
("python-wheel" ,python-wheel)))
- (home-page "http://aws.amazon.com/cli/")
+ (home-page "https://aws.amazon.com/cli/")
(synopsis "Command line client for AWS")
(description "AWS CLI provides a unified command line interface to the
Amazon Web Services (AWS) API.")
@@ -9062,7 +9184,21 @@ normally the case.")
"1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
(build-system python-build-system)
(arguments
- `(#:tests? #f)) ; no tests provided
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'patch-libxdo-path
+ ;; Hardcode the path of dynamically loaded libxdo library.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((libxdo (string-append
+ (assoc-ref inputs "xdotool")
+ "/lib/libxdo.so")))
+ (substitute* "xdo/_xdo.py"
+ (("find_library\\(\"xdo\"\\)")
+ (simple-format #f "\"~a\"" libxdo)))
+ #t))))
+ #:tests? #f)) ; no tests provided
+ (propagated-inputs
+ `(("python-six" ,python-six)))
(inputs
`(("xdotool" ,xdotool)
("libX11" ,libx11)))
@@ -9226,14 +9362,14 @@ file.")
(define-public python-paste
(package
(name "python-paste")
- (version "2.0.2")
+ (version "2.0.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "Paste" version))
(sha256
(base32
- "16dsv9qi0r4qsrsb6dilpq2rx0fnglvh36flzywcdnm2jg43mb5d"))
+ "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3"))
(patches (search-patches "python-paste-remove-website-test.patch"
"python-paste-remove-timing-test.patch"))))
(build-system python-build-system)
@@ -9241,12 +9377,6 @@ file.")
`(("python-nose" ,python-nose)))
(propagated-inputs
`(("python-six" ,python-six)))
- (arguments
- '(;; Tests don't pass on Python 3, but work fine on Python 2.
- ;; (As of 2.0.2, Python 3 support in Paste is presently a bit broken,
- ;; but is usable enough for the minimal amount it's used in MediaGoblin
- ;; still... things should be better by the next Paste release.)
- #:tests? #f))
(home-page "http://pythonpaste.org")
(synopsis
"Python web development tools, focusing on WSGI")
@@ -9254,18 +9384,10 @@ file.")
"Paste provides a variety of web development tools and middleware which
can be nested together to build web applications. Paste's design closely
follows ideas flowing from WSGI (Web Standard Gateway Interface).")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-paste))))))
+ (license license:expat)))
(define-public python2-paste
- (let ((paste (package-with-python2
- (strip-python2-variant python-paste))))
- (package
- (inherit paste)
- (arguments
- ;; Tests are back for Python 2!
- `(#:tests? #t
- ,@(package-arguments paste))))))
+ (package-with-python2 python-paste))
(define-public python-pastescript
(package
@@ -10692,13 +10814,13 @@ It uses LR parsing and does extensive error checking.")
(define-public python-tabulate
(package
(name "python-tabulate")
- (version "0.7.5")
+ (version "0.7.7")
(source (origin
(method url-fetch)
(uri (pypi-uri "tabulate" version))
(sha256
(base32
- "03l1r7ddd1a0j2snv1yd0hlnghjad3fg1an1jr8936ksv75slwch"))
+ "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))
;; Fix tests
(modules '((guix build utils)))
(snippet '(substitute* '("test/test_cli.py"
@@ -11000,13 +11122,13 @@ It supports TSIG authenticated messages and EDNS0.")
(define-public python-email-validator
(package
(name "python-email-validator")
- (version "1.0.1")
+ (version "1.0.2")
(source
(origin (method url-fetch)
(uri (pypi-uri "email_validator" version))
(sha256
(base32
- "0mn8jg5h8ifl8w6a6m0hq8kbk0mzw9vm054qfamkn89b3npz52qw"))))
+ "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
(build-system python-build-system)
(arguments
'(#:phases
@@ -11308,14 +11430,14 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
(define-public python-stem
(package
(name "python-stem")
- (version "1.5.3")
+ (version "1.5.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "stem" version))
(sha256
(base32
- "0fm67dfx6qaj0mg80r4yw2i72birpzn7cnbyz4p1857max3zfc97"))))
+ "1j7pnblrn0yr6jmxvsq6y0ihmxmj5x50jl2n2606w67f6wq16j9n"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -12825,3 +12947,191 @@ protocols written in pure Python.")
(define-public python2-dulwich
(package-with-python2 python-dulwich))
+
+(define-public python-pbkdf2
+ (package
+ (name "python-pbkdf2")
+ (version "1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pbkdf2" version))
+ (sha256
+ (base32
+ "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-pycrypto" ,python-pycrypto))) ; optional
+ (home-page "http://www.dlitz.net/software/python-pbkdf2/")
+ (synopsis "Password-based key derivation")
+ (description "This module implements the password-based key derivation
+function, PBKDF2, specified in RSA PKCS#5 v2.0.
+
+PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
+is part of the RSA Public Key Cryptography Standards series. The provided
+implementation takes a password or a passphrase and a salt value (and
+optionally a iteration count, a digest module, and a MAC module) and provides
+a file-like object from which an arbitrarly-sized key can be read.")
+ (license license:expat)))
+
+(define-public python2-pbkdf2
+ (package-with-python2 python-pbkdf2))
+
+(define-public python-qrcode
+ (package
+ (name "python-qrcode")
+ (version "5.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "qrcode" version))
+ (sha256
+ (base32
+ "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-lxml" ,python-lxml) ; for SVG output
+ ("python-pillow" ,python-pillow) ; for PNG output
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/lincolnloop/python-qrcode")
+ (synopsis "QR Code image generator")
+ (description "This package provides a pure Python QR Code generator
+module. It uses the Python Imaging Library (PIL) to allow for the generation
+of QR Codes.
+
+In addition this package provides a command line tool to generate QR codes and
+either write these QR codes to a file or do the output as ascii art at the
+console.")
+ (license license:bsd-3)))
+
+(define-public python2-qrcode
+ (package-with-python2 python-qrcode))
+
+;; SlowAES isn't compatible with Python 3.
+(define-public python2-slowaes
+ (package
+ (name "python2-slowaes")
+ (version "0.1a1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "slowaes" version))
+ (sha256
+ (base32
+ "02dzajm83a7lqgxf6r3hgj64wfmcxz8gs4nvgxpvj5n19kjqlrc3"))))
+ (build-system python-build-system)
+ (arguments `(#:python ,python-2))
+ (home-page "http://code.google.com/p/slowaes/")
+ (synopsis "Implementation of AES in Python")
+ (description "This package contains an implementation of AES in Python.
+This implementation is slow (hence the project name) but still useful when
+faster ones are not available.")
+ (license license:asl2.0)))
+
+(define-public python-rst2ansi
+ (package
+ (name "python-rst2ansi")
+ (version "0.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "rst2ansi" version))
+ (sha256
+ (base32
+ "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-docutils" ,python-docutils)))
+ (home-page "https://github.com/Snaipe/python-rst-to-ansi")
+ (synopsis "Convert RST to ANSI-decorated console output")
+ (description
+ "Python module dedicated to rendering RST (reStructuredText) documents
+to ansi-escaped strings suitable for display in a terminal.")
+ (license license:expat)))
+
+(define-public python-ddt
+ (package
+ (name "python-ddt")
+ (version "1.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ddt" version))
+ (sha256
+ (base32
+ "1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-nose" ,python-nose)))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-pyyaml" ,python-pyyaml)))
+ (home-page "https://github.com/txels/ddt")
+ (synopsis "Data-Driven Tests")
+ (description
+ "DDT (Data-Driven Tests) allows you to multiply one test case by running
+it with different test data, and make it appear as multiple test cases.")
+ (license license:expat)))
+
+(define-public python2-ddt
+ (package-with-python2 python-ddt))
+
+(define-public python-pycosat
+ (package
+ (name "python-pycosat")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pycosat" version))
+ (sha256
+ (base32
+ "1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
+ ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
+ (build-system python-build-system)
+ (home-page "https://github.com/ContinuumIO/pycosat")
+ (synopsis "Bindings to picosat (a SAT solver)")
+ (description
+ "This package provides efficient Python bindings to @code{picosat} on
+the C level. When importing pycosat, the @code{picosat} solver becomes part
+of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
+Problem} (SAT) solver.")
+ (license license:expat)))
+
+(define-public python2-pycosat
+ (package-with-python2 python-pycosat))
+
+(define-public python2-ruamel.ordereddict
+ (package
+ (name "python2-ruamel.ordereddict")
+ (version "0.4.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ruamel.ordereddict" version))
+ (sha256
+ (base32
+ "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (zero? (system* "python" "test/testordereddict.py")))))))
+ (home-page "https://bitbucket.org/ruamel/ordereddict")
+ (synopsis "Version of dict that keeps keys in insertion order")
+ (description
+ "This is an implementation of an ordered dictionary with @dfn{Key
+Insertion Order} (KIO: updates of values do not affect the position of the
+key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
+removed and put at the back). The standard library module @code{OrderedDict},
+implemented later, implements a subset of @code{ordereddict} functionality.
+Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
+Order} (KSO, no sorting function can be specified, but a transform can be
+specified to apply on the key before comparison (e.g. @code{string.lower})).")
+ (license license:expat)))