gnu: Add python-rply.
[jackhill/guix/guix.git] / gnu / packages / python.scm
index a1b926d..ee6da2c 100644 (file)
@@ -13,7 +13,7 @@
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2015 Erik Edrosa <erik.edrosa@gmail.com>
+;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015 Chris Marusich <cmmarusich@gmail.com>
@@ -341,16 +341,14 @@ instead of @command{python3}.")))
 (define-public python-psutil
   (package
     (name "python-psutil")
-    (version "3.0.1")
+    (version "3.3.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/p/psutil/psutil-"
-             version ".tar.gz"))
+       (uri (pypi-uri "psutil" version))
        (sha256
         (base32
-         "00c8h1mzqysih99z8pnbmdv117d2naldf11yjy50dhykxsf3n89z"))))
+         "11bd1555vf2ibjnmqf64im5cp55vcqfq45ccinm9ll3bs68na6s2"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-setuptools" ,python-setuptools)))
@@ -372,17 +370,14 @@ pidof, tty, taskset, pmap.")
 (define-public python-passlib
   (package
     (name "python-passlib")
-    (version "1.6.2")
+    (version "1.6.5")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/p/passlib/passlib-"
-             version
-             ".tar.gz"))
+       (uri (pypi-uri "passlib" version))
        (sha256
         (base32
-         "0b9rd161b3mmiwd7nx1v599yh9sp07mlfwac65sjy9qn1l0gd1z9"))))
+         "1z27wdxs5rj5xhhqfzvzn3yg682irkxw6dcs5jj7mcf97psk8gd8"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose" ,python-nose)
@@ -1019,31 +1014,16 @@ doing practical, real world data analysis in Python.")
 (define-public python-tzlocal
   (package
     (name "python-tzlocal")
-    (version "1.1.1")
+    (version "1.2")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/t/"
-                          "tzlocal/tzlocal-" version ".zip"))
+      (uri (pypi-uri "tzlocal" version))
       (sha256
        (base32
-        "1m3y918c3chf41fwg2bx4w42bqsjzn3dyvvcmwwy13c8gj6zssv9"))))
+        "12wsw2fl3adrqrwghasld57bhqdrzn0crblqrci1p5acd0ni53s3"))))
     (build-system python-build-system)
-    (native-inputs
-     `(("unzip" ,unzip)
-       ("python-setuptools" ,python-setuptools)))
-    (inputs `(("python-pytz" ,python-pytz)))
-    (arguments
-     `(#:phases
-       (alist-replace
-        'unpack
-        (lambda _
-          (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
-                                      "/bin/unzip"))
-                (source (assoc-ref %build-inputs "source")))
-            (and (zero? (system* unzip source))
-                 (chdir (string-append "tzlocal-" ,version)))))
-        %standard-phases)))
+    (propagated-inputs `(("python-pytz" ,python-pytz)))
     (home-page "https://github.com/regebro/tzlocal")
     (synopsis
      "Local timezone information for Python")
@@ -1896,16 +1876,14 @@ and sensible default behaviors into your setuptools run.")
 (define-public python-fixtures
   (package
     (name "python-fixtures")
-    (version "1.3.1")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/f/fixtures/fixtures-"
-             version ".tar.gz"))
+       (uri (pypi-uri "fixtures" version))
        (sha256
         (base32
-         "1khpywdh91ijryhxjxiyyi5rmbimhl8hwbbf8lazhgzq6yxz6g5n"))))
+         "0djxvdwm8s60dbfn7bhf40x6g818p3b3mlwijm1c3bqg7msn271y"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)
@@ -2068,16 +2046,13 @@ files.")
 (define-public python-pyld
   (package
     (name "python-pyld")
-    (version "0.6.0")
+    (version "0.6.8")
     (source (origin
               (method url-fetch)
-              (uri
-               (string-append
-                "https://pypi.python.org/packages/source/P/PyLD/PyLD-"
-                version ".tar.gz"))
+              (uri (pypi-uri "PyLD" version))
               (sha256
                (base32
-                "1l9ymj85fsvayqplinzpk0kyiq6m74ps9xd3a9fhlxfn1rldf8x8"))))
+                "0k881ffazpf8q1z8862g4bb3pzwpnz9whrci2mf311mvn1qbyqad"))))
     (build-system python-build-system)
     (inputs
      `(("python-setuptools" ,python-setuptools)))
@@ -2192,13 +2167,49 @@ compatible install in a way that is very close to the on-disk format.")
 than Python’s urllib2 library.")
     (license asl2.0)))
 
+;; Some software requires an older version of Requests, notably Docker
+;; Compose.
+(define-public python-requests-2.7
+  (package (inherit python-requests)
+    (version "2.7.0")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "requests" version))
+             (sha256
+              (base32
+               "0gdr9dxm24amxpbyqpbh3lbwxc2i42hnqv50sigx568qssv3v2ir"))))))
+
 (define-public python2-requests
   (package-with-python2 python-requests))
 
+(define-public python-vcversioner
+  (package
+    (name "python-vcversioner")
+    (version "2.14.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "vcversioner" version))
+       (sha256
+        (base32
+         "11ivq1bm7v0yb4nsfbv9m7g7lyjn112gbvpjnjz8nv1fx633dm5c"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (synopsis "Python library for version number discovery")
+    (description "Vcversioner is a Python library that inspects tagging
+information in a variety of version control systems in order to discover
+version numbers.")
+    (home-page "https://github.com/habnabit/vcversioner")
+    (license isc)))
+
+(define-public python2-vcversioner
+  (package-with-python2 python-vcversioner))
+
 (define-public python-jsonschema
   (package
     (name "python-jsonschema")
-    (version "2.4.0")
+    (version "2.5.1")
     (source (origin
              (method url-fetch)
              (uri
@@ -2207,10 +2218,11 @@ than Python’s urllib2 library.")
                version ".tar.gz"))
              (sha256
               (base32
-               "1yik3031ziygvq66rj3mzfqdgxj29sg1bkfc46wsgi7lnbqs560j"))))
+               "0hddbqjm4jq63y8jf44nswina1crjs16l9snb6m3vvgyg31klrrn"))))
     (build-system python-build-system)
     (inputs
-     `(("python-setuptools" ,python-setuptools)))
+     `(("python-setuptools" ,python-setuptools)
+       ("python-vcversioner" ,python-vcversioner)))
     (home-page "http://github.com/Julian/jsonschema")
     (synopsis "Implementation of JSON Schema for Python")
     (description
@@ -2369,21 +2381,24 @@ object.")
 (define-public python-virtualenv
   (package
     (name "python-virtualenv")
-    (version "1.11.6")
+    (version "13.1.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/v/virtualenv/virtualenv-"
-             version ".tar.gz"))
+       (uri (pypi-uri "virtualenv" version))
        (sha256
         (base32
-         "1xq4prmg25n9cz5zcvbqx68lmc3kl39by582vd8pzs9f3qalqyiy"))))
+         "1p732accxwqfjbdna39k8w8lp9gyw91vr4kzkhm8mgfxikqqxg5a"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+        (replace 'check
+         (lambda _ (zero? (system* "py.test")))))))
     (inputs
      `(("python-setuptools" ,python-setuptools)
        ("python-mock" ,python-mock)
-       ("python-nose" ,python-nose)))
+       ("python-pytest" ,python-pytest)))
     (home-page "https://virtualenv.pypa.io/")
     (synopsis "Virtual Python environment builder")
     (description
@@ -3686,15 +3701,14 @@ a general image processing tool.")
 (define-public python-pycparser
   (package
     (name "python-pycparser")
-    (version "2.10")
+    (version "2.14")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://pypi.python.org/packages/source/p/"
-                          "pycparser/pycparser-" version ".tar.gz"))
+      (uri (pypi-uri "pycparser" version))
       (sha256
        (base32
-        "0v5qfq03yvd1pi0dwlgfai0p3dh9bq94pydn19c4pdn0c6v9hzcm"))))
+        "0wvzyb6rxsfj3xcnpa4ynbh9qc7rrbk2277d5wqpphmx9akv8nbr"))))
     (outputs '("out" "doc"))
     (build-system python-build-system)
     (native-inputs
@@ -4347,13 +4361,22 @@ and written in Python.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/u/urwid/urwid-"
-             version ".tar.gz"))
+       (uri (pypi-uri "urwid" version))
        (sha256
         (base32
          "18mb0yy94sjc434rd61m2sfnw27sa0nyrszpj5a9r9zh7fnlzw19"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Disable failing test. Bug filed upstream:
+         ;; https://github.com/wardi/urwid/issues/164
+         ;; TODO: check again for python-urwid > 1.3.0 or python > 3.4.3.
+         (add-after 'unpack 'disable-failing-test
+          (lambda _
+            (substitute* "urwid/tests/test_event_loops.py"
+              (("test_remove_watch_file")
+                "disable_remove_watch_file")))))))
     (native-inputs `(("python-setuptools" ,python-setuptools)))
     (home-page "http://urwid.org")
     (synopsis "Console user interface library for Python")
@@ -4914,15 +4937,13 @@ applications.")
 (define-public python-pyzmq
   (package
     (name "python-pyzmq")
-    (version "14.6.0")
+    (version "15.1.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/p/pyzmq/pyzmq-"
-             version ".tar.gz"))
+       (uri (pypi-uri "pyzmq" version))
        (sha256
-        (base32 "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp"))))
+        (base32 "13fhwnlvsvxv72kfhqbpn6qi7msh8mc8377mpabv32skk2cjfnxx"))))
     (build-system python-build-system)
     (arguments
      `(#:configure-flags
@@ -4975,17 +4996,14 @@ PEP 8.")
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
-    (version "0.9.2")
+    (version "1.0.0")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append
-               "https://pypi.python.org/packages/source/p/pyflakes/pyflakes-"
-               version
-               ".tar.gz"))
+        (uri (pypi-uri "pyflakes" version))
         (sha256
           (base32
-            "0pvawddspdq0y22dbraq5gld9qr6rwa7zhmpfhl2b7v9rqiiqs82"))))
+            "0qs2sgqszq7wcplis8509wk2ygqcrwzbs1ghfj3svvivq2j377pk"))))
     (build-system python-build-system)
     (inputs
       `(("python-setuptools" ,python-setuptools)))
@@ -5081,17 +5099,14 @@ complexity of Python source code.")
 (define-public python-flake8
   (package
     (name "python-flake8")
-    (version "2.4.1")
+    (version "2.5.1")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append
-               "https://pypi.python.org/packages/source/f/flake8/flake8-"
-               version
-               ".tar.gz"))
+        (uri (pypi-uri "flake8" version))
         (sha256
           (base32
-            "0dvmrpv7x98xkzffjz1z7lqr90sp5zdz16bdwckfd1cckpjvnzif"))))
+            "00sn2g5ydriv5anbipcrprpv797kh4q8rfa75w3fc7v7n14fv2j4"))))
     (build-system python-build-system)
     (inputs
       `(("python-setuptools" ,python-setuptools)
@@ -5161,6 +5176,39 @@ Python.")
 (define-public python2-mistune
   (package-with-python2 python-mistune))
 
+(define-public python-markdown
+  (package
+    (name "python-markdown")
+    (version "2.6.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Markdown" version))
+       (sha256
+        (base32
+         "0q758a3fiiawr20b3hhjfs677cwj6xi284yb7xspcvv0fdicz54d"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+                  (lambda _
+                    (zero? (system* "python" "run-tests.py")))))))
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-pyyaml" ,python-pyyaml)))
+    (home-page "https://pythonhosted.org/Markdown/")
+    (synopsis "Python implementation of Markdown")
+    (description
+     "This package provides a Python implementation of John Gruber's
+Markdown.  The library features international input, various Markdown
+extensions, and several HTML output formats.  A command line wrapper
+markdown_py is also provided to convert Markdown files to HTML.")
+    (license bsd-3)))
+
+(define-public python2-markdown
+  (package-with-python2 python-markdown))
+
 (define-public python-ptyprocess
   (package
     (name "python-ptyprocess")
@@ -5490,16 +5538,14 @@ fractional seconds) of a clock which never goes backwards.")
 (define-public python-webob
   (package
     (name "python-webob")
-    (version "1.5.0b0")
+    (version "1.5.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "https://pypi.python.org/packages/source/W/WebOb/WebOb-"
-             version ".tar.gz"))
+       (uri (pypi-uri "WebOb" version))
        (sha256
         (base32
-         "140b3iczclk1j0405rvw5gxshqfkhcc8254fj520z3m23cwbql4a"))))
+         "02bhhzijfhv8hmi1i54d4b0v43liwhnywhflvxsv4x3zax9s3afq"))))
     (build-system python-build-system)
     (inputs
       `(("python-nose" ,python-nose)
@@ -5840,19 +5886,16 @@ Python Package Index (PyPI).")
 (define-public python-tlsh
   (package
     (name "python-tlsh")
-    (version "3.4.1")                             ;according to CMakeLists.txt
+    (version "3.4.4")
     (home-page "https://github.com/trendmicro/tlsh")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url home-page)
-                    ;; This is a commit right after 3.4.1; see
-                    ;; <https://github.com/trendmicro/tlsh/issues/9>.
-                    (commit "3ae3f1f")))
+              (method url-fetch)
+              (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
+                                  version ".tar.gz"))
               (sha256
                (base32
-                "12cvnr5ndm5cg6i7lch93id90kgwgrigjgrj8f186nh3h4bf9chj"))
-              (file-name (string-append name "-" version "-checkout"))))
+                "00bhzjqrlh7v538kbkbn8lgx976j1138al3sdhklaizqjvpwyk4r"))
+              (file-name (string-append name "-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (arguments
      '(#:out-of-source? #f
@@ -5888,15 +5931,13 @@ a hash value.")
 (define-public python-libarchive-c
   (package
     (name "python-libarchive-c")
-    (version "2.1")
+    (version "2.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/l/libarchive-c/libarchive-c-"
-                    version ".tar.gz"))
+              (uri (pypi-uri "libarchive-c" version))
               (sha256
                (base32
-                "089lrz6xyrfnk55v35vis6jyqyyl77w093057djyspnd2744wi2n"))))
+                "0z4r7v3dhd6b3120mav05ff08srih176r2rg5k8kn7mjd9pslm2x"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -6441,15 +6482,14 @@ This allows one to make simple text-mode user interfaces on Unix-like systems")
 (define-public python-pyrfc3339
   (package
     (name "python-pyrfc3339")
-    (version "0.2")
+    (version "1.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pypi.python.org/packages/source/p/"
-                           "pyRFC3339/pyRFC3339-" version ".tar.gz"))
+       (uri (pypi-uri "pyRFC3339" version))
        (sha256
         (base32
-         "1pp648xsjaw9h1xq2mgwzda5wis2ypjmzxlksc1a8grnrdmzy155"))))
+         "0dgm4l9y8jiax5cp6yxjd2i27cq8h33sh81n1wfbmnmqb32cdywd"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pytz" ,python-pytz)))
@@ -6611,3 +6651,409 @@ the standard library.")
 
 (define-public python2-contextlib2
   (package-with-python2 python-contextlib2))
+
+(define-public python-texttable
+  (package
+    (name "python-texttable")
+    (version "0.8.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "texttable" version))
+       (sha256
+        (base32
+         "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; no tests
+    (home-page "https://github.com/foutaise/texttable/")
+    (synopsis "Python module for creating simple ASCII tables")
+    (description "Texttable is a Python module for creating simple ASCII
+tables.")
+    (license lgpl2.1+)))
+
+(define-public python2-texttable
+  (package-with-python2 python-texttable))
+
+(define-public python-websocket-client
+  (package
+    (name "python-websocket-client")
+    (version "0.34.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://pypi.python.org/packages/source/w"
+                           "/websocket-client/websocket_client-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1prdx6d49f1cff17kzj15bnz09palfdgc1m5dkq9jd4mr90n4ak8"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-six" ,python-six))) ; for tests
+    (inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/liris/websocket-client")
+    (synopsis "WebSocket client for Python")
+    (description "The Websocket-client module provides the low level APIs for
+WebSocket usage in Python programs.")
+    (license lgpl2.1+)))
+
+(define-public python2-websocket-client
+  (package-with-python2 python-websocket-client))
+
+(define-public python-atomicwrites
+  (package
+    (name "python-atomicwrites")
+    (version "0.1.8")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "atomicwrites" version))
+             (sha256
+              (base32
+               "13nwk0gw0yb61pnf5vxs3fvhav6q3zrf08x9ggc93bnk5fsssx1j"))))
+    (build-system python-build-system)
+    (synopsis "Atomic file writes in Python")
+    (description "Library for atomic file writes using platform dependent tools
+for atomic filesystem operations.")
+    (home-page "https://github.com/untitaker/python-atomicwrites")
+    (license license:expat)))
+
+(define-public python-requests-toolbelt
+  (package
+    (name "python-requests-toolbelt")
+    (version "0.5.0")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "requests-toolbelt" version))
+             (sha256
+              (base32
+               "1kbms1s52dhb98vbpaprr15b0ijdbqp500lpfsyjccpd8cjkyngk"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
+    (synopsis "Extensions to python-requests")
+    (description "This is a toolbelt of useful classes and functions to be used
+with python-requests.")
+    (home-page "https://github.com/sigmavirus24/requests-toolbelt")
+    (license asl2.0)))
+
+(define-public python-click-threading
+  (package
+    (name "python-click-threading")
+    (version "0.1.2")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "click-threading" version))
+             (sha256
+              (base32
+               "0jmrv4334lfxa2ss53c06dafdwqbk1pb3ihd26izn5igw1bm8145"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-click" ,python-click)))
+    (synopsis "Utilities for multithreading in Click")
+    (description "This package provides utilities for multithreading in Click
+applications.")
+    (home-page "https://github.com/click-contrib/click-threading")
+    (license license:expat)))
+
+(define-public python-click-log
+  (package
+    (name "python-click-log")
+    (version "0.1.1")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "click-log" version))
+             (sha256
+              (base32
+               "1z3jdwjmwax159zrnyx830xa968rfqrpkm04ad5xqyh0269ydiqb"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-click" ,python-click)))
+    (synopsis "Logging for click applications")
+    (description "This package provides a Python library for logging Click
+applications.")
+    (home-page "https://github.com/click-contrib/click-log")
+    (license license:expat)))
+
+(define-public python-apipkg
+  (package
+    (name "python-apipkg")
+    (version "1.4")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "apipkg" version))
+             (sha256
+              (base32
+               "1iks5701qnp3dlr3q1d9qm68y2plp2m029irhpz92a44psfkjf1f"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("python-pytest" ,python-pytest)))
+    (synopsis "Namespace control and lazy-import mechanism")
+    (description "With apipkg you can control the exported namespace of a Python
+package and greatly reduce the number of imports for your users.  It is a small
+pure Python module that works on virtually all Python versions.")
+    (home-page "https://bitbucket.org/hpk42/apipkg")
+    (license license:expat)))
+
+(define-public python-execnet
+  (package
+    (name "python-execnet")
+    (version "1.4.1")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "execnet" version))
+             (sha256
+              (base32
+               "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
+    (propagated-inputs
+     `(("python-apipkg" ,python-apipkg)))
+    (synopsis "Rapid multi-Python deployment")
+    (description "Execnet provides a share-nothing model with
+channel-send/receive communication for distributing execution across many
+Python interpreters across version, platform and network barriers.  It has a
+minimal and fast API targetting the following uses:
+@enumerate
+@item distribute tasks to (many) local or remote CPUs
+@item write and deploy hybrid multi-process applications
+@item write scripts to administer multiple environments
+@end enumerate")
+    (home-page "http://codespeak.net/execnet/")
+    (license license:expat)))
+
+;;; The software provided by this package was integrated into pytest 2.8.
+(define-public python-pytest-cache
+  (package
+    (name "python-pytest-cache")
+    (version "1.0")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "pytest-cache" version))
+             (sha256
+              (base32
+               "1a873fihw4rhshc722j4h6j7g3nj7xpgsna9hhg3zn6ksknnhx5y"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-execnet" ,python-execnet)))
+    (synopsis "Py.test plugin with mechanisms for caching across test runs")
+    (description "The pytest-cache plugin provides tools to rerun failures from
+the last py.test invocation.")
+    (home-page "https://bitbucket.org/hpk42/pytest-cache/")
+    (license license:expat)))
+
+(define-public python-pytest-localserver
+  (package
+    (name "python-pytest-localserver")
+    (version "0.3.4")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "pytest-localserver" version ".zip"))
+             (sha256
+              (base32
+               "050q505a7gnsz7vqidw0w5dvxjb2flzi7z734agpjzmsl85c2bcx"))))
+    (build-system python-build-system)
+    (arguments
+      `(#:phases (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (zero? (system* "py.test" "--genscript=runtests.py"))
+             (zero? (system* "py.test")))))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (propagated-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)
+       ("python-werkzeug" ,python-werkzeug)))
+    (synopsis "Py.test plugin to test server connections locally")
+    (description "Pytest-localserver is a plugin for the pytest testing
+framework which enables you to test server connections locally.")
+    (home-page "https://pypi.python.org/pypi/pytest-localserver")
+    (license license:expat)))
+
+(define-public python-wsgi-intercept
+  (package
+    (name "python-wsgi-intercept")
+    (version "0.10.3")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "wsgi_intercept" version))
+             (sha256
+              (base32
+               "0xyfchacywb1mql84270mcidsqc5ssyspd18yacjk82x2xc68h0r"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-httplib2" ,python-httplib2)
+       ("python-requests" ,python-requests)))
+    (synopsis "Puts a WSGI application in place of a real URI for testing")
+    (description "Wsgi_intercept installs a WSGI application in place of a real
+URI for testing.  Testing a WSGI application normally involves starting a
+server at a local host and port, then pointing your test code to that address.
+Instead, this library lets you intercept calls to any specific host/port
+combination and redirect them into a WSGI application importable by your test
+program.  Thus, you can avoid spawning multiple processes or threads to test
+your Web app.")
+    (home-page "https://github.com/cdent/wsgi-intercept")
+    (license license:expat)))
+
+(define-public python-pytest-xprocess
+  (package
+    (name "python-pytest-xprocess")
+    (version "0.9.1")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "pytest-xprocess" version))
+             (sha256
+              (base32
+               "17zlql1xqw3ywcgwwbqmw633aly99lab12hm02asr8awvg5603pp"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-cache" ,python-pytest-cache)
+       ("python-psutil" ,python-psutil)))
+    (synopsis "Pytest plugin to manage external processes across test runs")
+    (description "Pytest-xprocess is an experimental py.test plugin for managing
+processes across test runs.")
+    (home-page "https://bitbucket.org/pytest-dev/pytest-xprocess")
+    (license license:expat)))
+
+(define-public python-icalendar
+  (package
+    (name "python-icalendar")
+    (version "3.9.1")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "icalendar" version))
+             (sha256
+              (base32
+               "0fhrczdj3jxy5bvswphp3vys7vwv5c9bpwg7asykqwa3z6253q6q"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil-2" ,python-dateutil-2)
+       ("python-pytz" ,python-pytz)))
+    (synopsis "Python library for parsing iCalendar files")
+    (description "The icalendar package is a parser/generator of iCalendar
+files for use with Python.")
+    (home-page "https://github.com/collective/icalendar")
+    (license bsd-2)))
+
+(define-public python-sphinxcontrib-newsfeed
+  (package
+    (name "python-sphinxcontrib-newsfeed")
+    (version "0.1.4")
+    (source (origin
+             (method url-fetch)
+             (uri (pypi-uri "sphinxcontrib-newsfeed" version))
+             (sha256
+              (base32
+               "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-docutils" ,python-docutils)
+       ("python-sphinx" ,python-sphinx)))
+    (synopsis "News Feed extension for Sphinx")
+    (description "Sphinxcontrib-newsfeed is an extension for adding a simple
+Blog, News or Announcements section to a Sphinx website.")
+    (home-page "https://bitbucket.org/prometheus/sphinxcontrib-newsfeed")
+    (license bsd-2)))
+
+(define-public python-args
+  (package
+    (name "python-args")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "args" version))
+              (sha256
+               (base32
+                "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/kennethreitz/args")
+    (synopsis "Command-line argument parser")
+    (description
+     "This library provides a Python module to parse command-line arguments.")
+    (license bsd-3)))
+
+(define-public python2-args
+  (package-with-python2 python-args))
+
+(define-public python-clint
+  (package
+    (name "python-clint")
+    (version "0.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "clint" version))
+              (sha256
+               (base32
+                "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-args" ,python-args)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/kennethreitz/clint")
+    (synopsis "Command-line interface tools")
+    (description
+     "Clint is a Python module filled with a set of tools for developing
+command-line applications, including tools for colored and indented
+output, progress bar display, and pipes.")
+    (license isc)))
+
+(define-public python2-clint
+  (package-with-python2 python-clint))
+
+(define-public python-astor
+  (package
+    (name "python-astor")
+    (version "0.5")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "astor" version))
+              (sha256
+               (base32
+                "1fdafq5hkis1fxqlmhw0sn44zp2ar46nxhbc22cvwg7hsd8z5gsa"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/berkerpeksag/astor")
+    (synopsis "Read and write Python ASTs")
+    (description
+     "Astor is designed to allow easy manipulation of Python source via the
+Abstract Syntax Tree.")
+    (license bsd-3)))
+
+(define-public python2-astor
+  (package-with-python2 python-astor))
+
+(define-public python-rply
+  (package
+    (name "python-rply")
+    (version "0.7.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "rply" version))
+              (sha256
+               (base32
+                "12rp1d9ba7nvd5rhaxi6xzx1rm67r1k1ylsrkzhpwnphqpb06cvj"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-appdirs" ,python-appdirs)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "https://github.com/alex/rply")
+    (synopsis "Parser generator for Python")
+    (description
+     "This package provides a pure Python based parser generator, that also
+works with RPython.  It is a more-or-less direct port of David Bazzley's PLY,
+with a new public API, and RPython support.")
+    (license bsd-3)))
+
+(define-public python2-rply
+  (package-with-python2 python-rply))