summary refs log tree commit diff
path: root/pkgs/development/python-modules
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules')
-rw-r--r--pkgs/development/python-modules/IPy/default.nix24
-rw-r--r--pkgs/development/python-modules/MechanicalSoup/default.nix6
-rw-r--r--pkgs/development/python-modules/absl-py/default.nix5
-rw-r--r--pkgs/development/python-modules/affinity/default.nix8
-rw-r--r--pkgs/development/python-modules/aiohttp-jinja2/default.nix26
-rw-r--r--pkgs/development/python-modules/aiohttp/cors.nix14
-rw-r--r--pkgs/development/python-modules/aiohttp/default.nix6
-rw-r--r--pkgs/development/python-modules/ajpy/default.nix21
-rw-r--r--pkgs/development/python-modules/allpairspy/default.nix25
-rw-r--r--pkgs/development/python-modules/alot/default.nix48
-rw-r--r--pkgs/development/python-modules/aniso8601/default.nix4
-rw-r--r--pkgs/development/python-modules/antlr4-python3-runtime/default.nix18
-rw-r--r--pkgs/development/python-modules/anyjson/default.nix21
-rw-r--r--pkgs/development/python-modules/apsw/default.nix13
-rw-r--r--pkgs/development/python-modules/asana/default.nix28
-rw-r--r--pkgs/development/python-modules/asgi_ipc/default.nix21
-rw-r--r--pkgs/development/python-modules/asgi_redis/default.nix24
-rw-r--r--pkgs/development/python-modules/asgiref/default.nix22
-rw-r--r--pkgs/development/python-modules/astral/default.nix12
-rw-r--r--pkgs/development/python-modules/asynctest/default.nix4
-rw-r--r--pkgs/development/python-modules/behave/default.nix4
-rw-r--r--pkgs/development/python-modules/bibtexparser/default.nix25
-rw-r--r--pkgs/development/python-modules/binaryornot/default.nix27
-rw-r--r--pkgs/development/python-modules/blaze/default.nix10
-rw-r--r--pkgs/development/python-modules/bleach/default.nix6
-rw-r--r--pkgs/development/python-modules/blinkstick/default.nix31
-rw-r--r--pkgs/development/python-modules/bootstrapped-pip/default.nix4
-rw-r--r--pkgs/development/python-modules/boto3/default.nix4
-rw-r--r--pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--pkgs/development/python-modules/buildout-nix/default.nix4
-rw-r--r--pkgs/development/python-modules/cached-property/default.nix23
-rw-r--r--pkgs/development/python-modules/cachetools/1.nix4
-rw-r--r--pkgs/development/python-modules/can/default.nix4
-rw-r--r--pkgs/development/python-modules/cffi/default.nix4
-rw-r--r--pkgs/development/python-modules/chainer/default.nix4
-rw-r--r--pkgs/development/python-modules/codecov/default.nix10
-rw-r--r--pkgs/development/python-modules/colander/default.nix21
-rw-r--r--pkgs/development/python-modules/commonmark/default.nix27
-rw-r--r--pkgs/development/python-modules/construct/default.nix11
-rw-r--r--pkgs/development/python-modules/cram/default.nix16
-rw-r--r--pkgs/development/python-modules/credstash/default.nix11
-rw-r--r--pkgs/development/python-modules/csvkit/default.nix52
-rw-r--r--pkgs/development/python-modules/cupy/default.nix4
-rw-r--r--pkgs/development/python-modules/curtsies/default.nix8
-rw-r--r--pkgs/development/python-modules/cx_oracle/default.nix25
-rw-r--r--pkgs/development/python-modules/daphne/default.nix28
-rw-r--r--pkgs/development/python-modules/dask/default.nix4
-rw-r--r--pkgs/development/python-modules/datashape/default.nix4
-rw-r--r--pkgs/development/python-modules/dbf/default.nix9
-rw-r--r--pkgs/development/python-modules/deluge-client/default.nix21
-rw-r--r--pkgs/development/python-modules/diff_cover/default.nix4
-rw-r--r--pkgs/development/python-modules/discid/default.nix12
-rw-r--r--pkgs/development/python-modules/distro/default.nix1
-rw-r--r--pkgs/development/python-modules/dj-database-url/default.nix20
-rw-r--r--pkgs/development/python-modules/django-polymorphic/default.nix18
-rw-r--r--pkgs/development/python-modules/django/2_0.nix4
-rw-r--r--pkgs/development/python-modules/ecpy/default.nix5
-rw-r--r--pkgs/development/python-modules/faker/default.nix8
-rw-r--r--pkgs/development/python-modules/flake8-debugger/default.nix21
-rw-r--r--pkgs/development/python-modules/flask-script/default.nix11
-rw-r--r--pkgs/development/python-modules/fonttools/default.nix11
-rw-r--r--pkgs/development/python-modules/ftfy/default.nix22
-rw-r--r--pkgs/development/python-modules/ftputil/default.nix27
-rw-r--r--pkgs/development/python-modules/google_cloud_core/default.nix4
-rw-r--r--pkgs/development/python-modules/google_cloud_speech/default.nix4
-rw-r--r--pkgs/development/python-modules/gpapi/default.nix20
-rw-r--r--pkgs/development/python-modules/gplaycli/default.nix26
-rw-r--r--pkgs/development/python-modules/gpy/default.nix4
-rw-r--r--pkgs/development/python-modules/green/default.nix21
-rw-r--r--pkgs/development/python-modules/guessit/2.0.nix4
-rw-r--r--pkgs/development/python-modules/h11/default.nix19
-rw-r--r--pkgs/development/python-modules/ha-ffmpeg/default.nix28
-rw-r--r--pkgs/development/python-modules/hbmqtt/default.nix4
-rw-r--r--pkgs/development/python-modules/htmltreediff/default.nix26
-rw-r--r--pkgs/development/python-modules/hvac/default.nix22
-rw-r--r--pkgs/development/python-modules/hyperlink/default.nix13
-rw-r--r--pkgs/development/python-modules/idna-ssl/default.nix6
-rw-r--r--pkgs/development/python-modules/ipykernel/default.nix4
-rw-r--r--pkgs/development/python-modules/kafka-python/default.nix4
-rw-r--r--pkgs/development/python-modules/konfig/default.nix48
-rw-r--r--pkgs/development/python-modules/latexcodec/default.nix20
-rw-r--r--pkgs/development/python-modules/ldappool/default.nix25
-rw-r--r--pkgs/development/python-modules/libvirt/default.nix11
-rw-r--r--pkgs/development/python-modules/llvmlite/default.nix4
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozdevice.nix4
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozlog.nix11
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozprocess.nix4
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozprofile.nix4
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozrunner.nix4
-rw-r--r--pkgs/development/python-modules/marionette-harness/mozversion.nix4
-rw-r--r--pkgs/development/python-modules/marisa/default.nix25
-rw-r--r--pkgs/development/python-modules/miniupnpc/default.nix18
-rw-r--r--pkgs/development/python-modules/moinmoin/default.nix11
-rw-r--r--pkgs/development/python-modules/mozterm/default.nix16
-rw-r--r--pkgs/development/python-modules/msgpack-numpy/default.nix38
-rw-r--r--pkgs/development/python-modules/msgpack/default.nix4
-rw-r--r--pkgs/development/python-modules/mt-940/default.nix35
-rw-r--r--pkgs/development/python-modules/mt-940/no-coverage.patch26
-rw-r--r--pkgs/development/python-modules/murmurhash/default.nix23
-rw-r--r--pkgs/development/python-modules/mysqlclient/default.nix25
-rw-r--r--pkgs/development/python-modules/neovim/default.nix4
-rw-r--r--pkgs/development/python-modules/netdisco/default.nix8
-rw-r--r--pkgs/development/python-modules/networkx/default.nix16
-rw-r--r--pkgs/development/python-modules/nevow/default.nix41
-rw-r--r--pkgs/development/python-modules/nipype/default.nix4
-rw-r--r--pkgs/development/python-modules/node-semver/default.nix1
-rw-r--r--pkgs/development/python-modules/numba/default.nix4
-rw-r--r--pkgs/development/python-modules/numpy/default.nix4
-rw-r--r--pkgs/development/python-modules/odo/default.nix26
-rw-r--r--pkgs/development/python-modules/ofxhome/default.nix23
-rw-r--r--pkgs/development/python-modules/opentimestamps/default.nix29
-rw-r--r--pkgs/development/python-modules/oset/default.nix19
-rw-r--r--pkgs/development/python-modules/paramz/default.nix4
-rw-r--r--pkgs/development/python-modules/patator/default.nix40
-rw-r--r--pkgs/development/python-modules/paypalrestsdk/default.nix20
-rw-r--r--pkgs/development/python-modules/pendulum/default.nix4
-rw-r--r--pkgs/development/python-modules/phonenumbers/default.nix4
-rw-r--r--pkgs/development/python-modules/pillow/default.nix11
-rw-r--r--pkgs/development/python-modules/plotly/default.nix4
-rw-r--r--pkgs/development/python-modules/polib/default.nix20
-rw-r--r--pkgs/development/python-modules/pomegranate/default.nix5
-rw-r--r--pkgs/development/python-modules/proboscis/default.nix21
-rw-r--r--pkgs/development/python-modules/progressbar/default.nix21
-rw-r--r--pkgs/development/python-modules/prov/default.nix16
-rw-r--r--pkgs/development/python-modules/publicsuffix/default.nix27
-rw-r--r--pkgs/development/python-modules/pushbullet/default.nix27
-rw-r--r--pkgs/development/python-modules/pushover/default.nix24
-rw-r--r--pkgs/development/python-modules/py4j/default.nix22
-rw-r--r--pkgs/development/python-modules/pyamf/default.nix6
-rw-r--r--pkgs/development/python-modules/pyaxmlparser/default.nix20
-rw-r--r--pkgs/development/python-modules/pybfd/default.nix3
-rw-r--r--pkgs/development/python-modules/pybtex-docutils/default.nix20
-rw-r--r--pkgs/development/python-modules/pybtex/default.nix20
-rw-r--r--pkgs/development/python-modules/pychart/default.nix19
-rw-r--r--pkgs/development/python-modules/pycups/default.nix22
-rw-r--r--pkgs/development/python-modules/pycurl/default.nix39
-rw-r--r--pkgs/development/python-modules/pydub/default.nix4
-rw-r--r--pkgs/development/python-modules/pyftgl/default.nix4
-rw-r--r--pkgs/development/python-modules/pyglet/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhomematic/default.nix3
-rw-r--r--pkgs/development/python-modules/pyjade/default.nix29
-rw-r--r--pkgs/development/python-modules/pymongo/default.nix4
-rw-r--r--pkgs/development/python-modules/pyopencl/default.nix4
-rw-r--r--pkgs/development/python-modules/pysha3/default.nix19
-rw-r--r--pkgs/development/python-modules/pyslurm/default.nix7
-rw-r--r--pkgs/development/python-modules/pyspark/default.nix28
-rw-r--r--pkgs/development/python-modules/pytest-mock/default.nix6
-rw-r--r--pkgs/development/python-modules/pytest-xdist/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest/default.nix4
-rw-r--r--pkgs/development/python-modules/python-ctags3/default.nix17
-rw-r--r--pkgs/development/python-modules/python-daemon/default.nix23
-rw-r--r--pkgs/development/python-modules/python-oauth2/default.nix4
-rw-r--r--pkgs/development/python-modules/python-ptrace/default.nix24
-rw-r--r--pkgs/development/python-modules/pytools/default.nix4
-rw-r--r--pkgs/development/python-modules/readme_renderer/default.nix10
-rw-r--r--pkgs/development/python-modules/rednose/default.nix24
-rw-r--r--pkgs/development/python-modules/regex/default.nix11
-rw-r--r--pkgs/development/python-modules/requests-unixsocket/default.nix28
-rw-r--r--pkgs/development/python-modules/restructuredtext_lint/default.nix4
-rw-r--r--pkgs/development/python-modules/robomachine/default.nix11
-rw-r--r--pkgs/development/python-modules/robotframework/default.nix1
-rw-r--r--pkgs/development/python-modules/scikitlearn/default.nix3
-rw-r--r--pkgs/development/python-modules/selenium/default.nix29
-rw-r--r--pkgs/development/python-modules/setuptools/default.nix4
-rw-r--r--pkgs/development/python-modules/shapely/default.nix5
-rw-r--r--pkgs/development/python-modules/spacy/default.nix55
-rw-r--r--pkgs/development/python-modules/sphinx-navtree/default.nix18
-rw-r--r--pkgs/development/python-modules/sphinx/default.nix4
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix22
-rw-r--r--pkgs/development/python-modules/sqlalchemy/default.nix4
-rw-r--r--pkgs/development/python-modules/sqlmap/default.nix4
-rw-r--r--pkgs/development/python-modules/sseclient/default.nix24
-rw-r--r--pkgs/development/python-modules/stripe/default.nix15
-rw-r--r--pkgs/development/python-modules/tablib/default.nix29
-rw-r--r--pkgs/development/python-modules/termstyle/default.nix20
-rw-r--r--pkgs/development/python-modules/text-unidecode/default.nix23
-rw-r--r--pkgs/development/python-modules/textacy/default.nix4
-rw-r--r--pkgs/development/python-modules/thinc/default.nix63
-rw-r--r--pkgs/development/python-modules/thumbor/default.nix56
-rw-r--r--pkgs/development/python-modules/tifffile/default.nix4
-rw-r--r--pkgs/development/python-modules/tmdb3/default.nix20
-rw-r--r--pkgs/development/python-modules/tqdm/default.nix4
-rw-r--r--pkgs/development/python-modules/tunigo/default.nix27
-rw-r--r--pkgs/development/python-modules/txtorcon/default.nix12
-rw-r--r--pkgs/development/python-modules/virtual-display/default.nix23
-rw-r--r--pkgs/development/python-modules/wrapt/default.nix23
-rw-r--r--pkgs/development/python-modules/wsproto/default.nix14
-rw-r--r--pkgs/development/python-modules/xarray/default.nix4
-rw-r--r--pkgs/development/python-modules/xdot/default.nix21
-rw-r--r--pkgs/development/python-modules/xgboost/default.nix35
-rw-r--r--pkgs/development/python-modules/yahooweather/default.nix23
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix4
192 files changed, 2462 insertions, 505 deletions
diff --git a/pkgs/development/python-modules/IPy/default.nix b/pkgs/development/python-modules/IPy/default.nix
new file mode 100644
index 000000000000..eacfe8dda5bc
--- /dev/null
+++ b/pkgs/development/python-modules/IPy/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+  pname = "IPy";
+  version = "0.83";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "61da5a532b159b387176f6eabf11946e7458b6df8fb8b91ff1d345ca7a6edab8";
+  };
+
+  checkInputs = [ nose ];
+
+  checkPhase = ''
+    nosetests -e fuzz
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Class and tools for handling of IPv4 and IPv6 addresses and networks";
+    homepage = "https://github.com/autocracy/python-ipy";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ y0no ];
+  };
+}
diff --git a/pkgs/development/python-modules/MechanicalSoup/default.nix b/pkgs/development/python-modules/MechanicalSoup/default.nix
index b5d202af50a4..63eb93a207cd 100644
--- a/pkgs/development/python-modules/MechanicalSoup/default.nix
+++ b/pkgs/development/python-modules/MechanicalSoup/default.nix
@@ -3,15 +3,13 @@
 , pytestrunner, requests-mock, pytestcov, pytest
 }:
 
-
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "MechanicalSoup";
-  version = "0.9.0.post4";
+  version = "0.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ce8f822afbc9bef1499be417e8d5deecd0cd32606420165700e89477955f03ab";
+    sha256 = "22423efd025c3eedb06f41d3ff1127174a59f40dc560e82dce143956976195bf";
   };
 
   checkInputs = [ pytest pytestrunner requests-mock pytestcov ];
diff --git a/pkgs/development/python-modules/absl-py/default.nix b/pkgs/development/python-modules/absl-py/default.nix
index 5e295bb9516e..5acbf12aafc3 100644
--- a/pkgs/development/python-modules/absl-py/default.nix
+++ b/pkgs/development/python-modules/absl-py/default.nix
@@ -6,12 +6,11 @@
 
 buildPythonPackage rec {
   pname = "absl-py";
-  version = "0.1.9";
-  name = "${pname}-${version}";
+  version = "0.1.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c787e3bc7ef8fea7a8a79cf36b0c550b4bd66e13c05d1352fbc5786488befb0";
+    sha256 = "908eba9a96a37c10f10074aba57d685070b814906b02a1ea2cf54bb10a6b8c74";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/affinity/default.nix b/pkgs/development/python-modules/affinity/default.nix
index f2cb2ef6445e..4eaaf56b441f 100644
--- a/pkgs/development/python-modules/affinity/default.nix
+++ b/pkgs/development/python-modules/affinity/default.nix
@@ -1,13 +1,17 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "affinity";
   version = "0.1.0";
+
+  # syntax error
+  disabled = isPy3k;
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "1i6j7kszvnzh5vh9k48cqwx2kzf73a6abgv9s6bf0j2zmfjl2wb6";
   };
+
   meta = {
     description = "control processor affinity on windows and linux";
     homepage    = http://cheeseshop.python.org/pypi/affinity;
diff --git a/pkgs/development/python-modules/aiohttp-jinja2/default.nix b/pkgs/development/python-modules/aiohttp-jinja2/default.nix
new file mode 100644
index 000000000000..7b3bd6bbcc52
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-jinja2/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, buildPythonPackage, fetchPypi, aiohttp, jinja2, pytest, pytest-aiohttp }:
+
+buildPythonPackage rec {
+  pname = "aiohttp-jinja2";
+  version = "0.16.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ps182yrc5g9ph55927a7ssqx6m9kx0bivfxpaj8sa3znrdkl94d";
+  };
+
+  propagatedBuildInputs = [ aiohttp jinja2 ];
+
+  checkInputs = [ pytest pytest-aiohttp ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with lib; {
+    description = "Jinja2 support for aiohttp";
+    homepage = https://github.com/aio-libs/aiohttp_jinja2;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp/cors.nix b/pkgs/development/python-modules/aiohttp/cors.nix
index 9da239b524a6..3065bb17c05d 100644
--- a/pkgs/development/python-modules/aiohttp/cors.nix
+++ b/pkgs/development/python-modules/aiohttp/cors.nix
@@ -1,20 +1,24 @@
-{lib, stdenv, buildPythonPackage, fetchPypi, pythonOlder, typing, aiohttp }:
+{ lib, stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, typing, aiohttp
+}:
 
 buildPythonPackage rec {
   pname = "aiohttp-cors";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1r0mb4dw0dc1lpi54dk5vxqs06nyhvagp76lyrvk7rd94z5mjkd4";
+    sha256 = "0pczn54bqd32v8zhfbjfybiza6xh1szwxy6as577dn8g23bwcfad";
   };
 
-  # Requires network access
-  doCheck = false;
+  disabled = pythonOlder "3.5";
 
   propagatedBuildInputs = [ aiohttp ]
   ++ lib.optional (pythonOlder "3.5") typing;
 
+  # Requires network access
+  doCheck = false;
+
   meta = with lib; {
     description = "CORS support for aiohttp";
     homepage = "https://github.com/aio-libs/aiohttp-cors";
diff --git a/pkgs/development/python-modules/aiohttp/default.nix b/pkgs/development/python-modules/aiohttp/default.nix
index 19ad64e7472e..67bf5a115938 100644
--- a/pkgs/development/python-modules/aiohttp/default.nix
+++ b/pkgs/development/python-modules/aiohttp/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "aiohttp";
-  version = "3.0.1";
+  version = "3.0.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7aee5c0750584946fde40da70f0b28fe769f85182f1171acef18a35fd8ecd221";
+    sha256 = "281a9fa56b5ce587a2147ec285d18a224942f7e020581afa6cc44d7caecf937b";
   };
 
-  disabled = pythonOlder "3.4";
+  disabled = pythonOlder "3.5";
 
   checkInputs = [ pytest gunicorn pytest-mock ];
 
diff --git a/pkgs/development/python-modules/ajpy/default.nix b/pkgs/development/python-modules/ajpy/default.nix
new file mode 100644
index 000000000000..9d1905fe914b
--- /dev/null
+++ b/pkgs/development/python-modules/ajpy/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "ajpy";
+  version = "0.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "740e7daf728ba58dabaf4af2c4305262eb207a6e41791424a146a21396ceb9ad";
+  };
+
+  # ajpy doesn't have tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "AJP package crafting library";
+    homepage = "https://github.com/hypn0s/AJPy/";
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ y0no ];
+  };
+}
diff --git a/pkgs/development/python-modules/allpairspy/default.nix b/pkgs/development/python-modules/allpairspy/default.nix
new file mode 100644
index 000000000000..e21b43c60e0d
--- /dev/null
+++ b/pkgs/development/python-modules/allpairspy/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, six, pytest }:
+
+buildPythonPackage rec {
+  pname = "allpairspy";
+  version = "2.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9fb7962ee523bd96c5098cd3c97ac1b8eb73021d3df9314657ee9de00f52e034";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with lib; {
+    description = "Pairwise test combinations generator";
+    homepage = https://github.com/thombashi/allpairspy;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/alot/default.nix b/pkgs/development/python-modules/alot/default.nix
new file mode 100644
index 000000000000..67cd7eafd129
--- /dev/null
+++ b/pkgs/development/python-modules/alot/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, isPy3k
+, notmuch, urwid, urwidtrees, twisted, python_magic, configobj, pygpgme, mock, file, gpgme}:
+
+buildPythonPackage rec {
+  version = "0.5.1";
+  pname = "alot";
+
+  disabled = isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "pazz";
+    repo = pname;
+    rev = "version";
+    sha256 = "0ipkhc5wllfq78lg47aiq4qih0yjq8ad9xkrbgc88xk8pk9166i8";
+  };
+
+  postPatch = ''
+    substituteInPlace alot/defaults/alot.rc.spec \
+      --replace "themes_dir = string(default=None)" \
+                "themes_dir = string(default='$out/share/themes')"
+  '';
+
+  propagatedBuildInputs = [
+    notmuch
+    urwid
+    urwidtrees
+    twisted
+    python_magic
+    configobj
+    pygpgme
+    mock
+    file
+  ];
+
+  postInstall = ''
+    mkdir -p $out/share
+    cp -r extra/themes $out/share
+    wrapProgram $out/bin/alot \
+      --prefix LD_LIBRARY_PATH : '${stdenv.lib.makeLibraryPath [ notmuch file gpgme ]}'
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/pazz/alot;
+    description = "Terminal MUA using notmuch mail";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ garbas ];
+  };
+}
diff --git a/pkgs/development/python-modules/aniso8601/default.nix b/pkgs/development/python-modules/aniso8601/default.nix
index ba60922856ef..04df5d2fde84 100644
--- a/pkgs/development/python-modules/aniso8601/default.nix
+++ b/pkgs/development/python-modules/aniso8601/default.nix
@@ -3,7 +3,7 @@
 
 buildPythonPackage rec {
   pname = "aniso8601";
-  version = "2.0.0";
+  version = "2.0.1";
   name = "${pname}-${version}";
 
   meta = with stdenv.lib; {
@@ -16,6 +16,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "085786415d3550e89785ffbedaa9bb37d41de0707a1268bdbba11249064b71d1";
+    sha256 = "b7215a41e5194a829dc87d1ea5039315be85a6158ba15c8157a284c29fa6808b";
   };
 }
diff --git a/pkgs/development/python-modules/antlr4-python3-runtime/default.nix b/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
new file mode 100644
index 000000000000..84f2859d50c0
--- /dev/null
+++ b/pkgs/development/python-modules/antlr4-python3-runtime/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, buildPythonPackage, isPy3k }:
+
+buildPythonPackage rec {
+  version = "4.7.1";
+  name = "antlr4-python3-runtime-${version}";
+  disabled = !isPy3k;
+
+  src = fetchurl {
+    url = "mirror://pypi/a/antlr4-python3-runtime/${name}.tar.gz";
+    sha256 = "1lrzmagawmavyw1n1z0qarvs2jmbnbv0p89dah8g7klj8hnbf9hv";
+  };
+
+  meta = {
+    description = "Runtime for ANTLR";
+    homepage = "http://www.antlr.org/";
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/pkgs/development/python-modules/anyjson/default.nix b/pkgs/development/python-modules/anyjson/default.nix
new file mode 100644
index 000000000000..ba32cf7ea695
--- /dev/null
+++ b/pkgs/development/python-modules/anyjson/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, nose }:
+
+buildPythonPackage rec {
+  pname = "anyjson";
+  version = "0.3.3";
+
+  # The tests are written in a python2 syntax but anyjson is python3 valid
+  doCheck = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "37812d863c9ad3e35c0734c42e0bf0320ce8c3bed82cd20ad54cb34d158157ba";
+  };
+
+  buildInputs = [ nose ];
+
+  meta = {
+    homepage = https://pypi.python.org/pypi/anyjson/;
+    description = "Wrapper that selects the best available JSON implementation";
+  };
+}
diff --git a/pkgs/development/python-modules/apsw/default.nix b/pkgs/development/python-modules/apsw/default.nix
index 3e7e970da6c0..c16fb3c4c46b 100644
--- a/pkgs/development/python-modules/apsw/default.nix
+++ b/pkgs/development/python-modules/apsw/default.nix
@@ -1,22 +1,21 @@
-{ stdenv, buildPythonPackage, fetchurl
+{ stdenv, buildPythonPackage, fetchPypi
 , sqlite, isPyPy }:
 
 buildPythonPackage rec {
   pname = "apsw";
-  version = "3.7.6.2-r1";
-  name = "${pname}-${version}";
+  version = "3.9.2-r1";
 
   disabled = isPyPy;
 
-  src = fetchurl {
-    url = "http://apsw.googlecode.com/files/${name}.zip";
-    sha256 = "cb121b2bce052609570a2f6def914c0aa526ede07b7096dddb78624d77f013eb";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "dab96fd164dde9e59f7f27228291498217fa0e74048e2c08c7059d7e39589270";
   };
 
   buildInputs = [ sqlite ];
 
   # python: double free or corruption (fasttop): 0x0000000002fd4660 ***
-  doCheck = false;
+#   doCheck = false;
 
   meta = with stdenv.lib; {
     description = "A Python wrapper for the SQLite embedded relational database engine";
diff --git a/pkgs/development/python-modules/asana/default.nix b/pkgs/development/python-modules/asana/default.nix
index 91664f76ad10..62b176fb59c6 100644
--- a/pkgs/development/python-modules/asana/default.nix
+++ b/pkgs/development/python-modules/asana/default.nix
@@ -1,5 +1,5 @@
-{ lib, buildPythonPackage, fetchPypi,
-  pytest, requests, requests_oauthlib, six
+{ lib, buildPythonPackage, pytest, requests, requests_oauthlib, six
+, fetchFromGitHub, responses, stdenv
 }:
 
 buildPythonPackage rec {
@@ -7,18 +7,14 @@ buildPythonPackage rec {
   version = "0.7.0";
   name = "${pname}-${version}";
 
-  meta = {
-    description = "Python client library for Asana";
-    homepage = https://github.com/asana/python-asana;
-    license = lib.licenses.mit;
-  };
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "a7ff4a78529257a5412e78cafd6b3025523364c0ab628d579f2771dd66b254bc";
+  src = fetchFromGitHub {
+    owner = "asana";
+    repo = "python-asana";
+    rev = "v${version}";
+    sha256 = "0786y3wxqxxhsb0kkpx4bfzif3dhvv3dmm6vnq58iyj94862kpxf";
   };
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytest responses ];
   propagatedBuildInputs = [ requests requests_oauthlib six ];
 
   patchPhase = ''
@@ -27,11 +23,13 @@ buildPythonPackage rec {
     sed -i "s/requests_oauthlib~=0.6.1/requests_oauthlib >=0.6.1/" setup.py
   '';
 
-  # ERROR: file not found: tests
-  doCheck = false; 
-
   checkPhase = ''
     py.test tests
   '';
 
+  meta = with stdenv.lib; {
+    description = "Python client library for Asana";
+    homepage = https://github.com/asana/python-asana;
+    license = licenses.mit;
+  };
 }
diff --git a/pkgs/development/python-modules/asgi_ipc/default.nix b/pkgs/development/python-modules/asgi_ipc/default.nix
deleted file mode 100644
index bdb12203de67..000000000000
--- a/pkgs/development/python-modules/asgi_ipc/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ stdenv, buildPythonPackage, fetchurl,
-  asgiref, msgpack, posix_ipc
-}:
-buildPythonPackage rec {
-  version = "1.4.2";
-  pname = "asgi_ipc";
-  name = "${pname}-${version}";
-
-  src = fetchurl {
-    url = "mirror://pypi/a/asgi_ipc/${name}.tar.gz";
-    sha256 = "2403f41184405791b05e7aee570bd6ccd47e2d91845d78fe17adcf58ef48c037";
-  };
-
-  propagatedBuildInputs = [ asgiref msgpack posix_ipc ];
-
-  meta = with stdenv.lib; {
-    description = "Posix IPC-backed ASGI channel layer implementation";
-    license = licenses.bsd3;
-    homepage = https://github.com/django/asgi_ipc/;
-  };
-}
diff --git a/pkgs/development/python-modules/asgi_redis/default.nix b/pkgs/development/python-modules/asgi_redis/default.nix
deleted file mode 100644
index d4c9388f1a7d..000000000000
--- a/pkgs/development/python-modules/asgi_redis/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi,
-  asgiref, asgi_ipc, msgpack, six, redis, cryptography
-}:
-buildPythonPackage rec {
-  version = "1.4.3";
-  pname = "asgi_redis";
-  name = "${pname}-${version}";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "10xk7k7mcd28nb3v93mc8xa7sa6p02jnbl8idk6scr6p75jaixzi";
-  };
-
-  # Requires a redis server available
-  doCheck = false;
-
-  propagatedBuildInputs = [ asgiref asgi_ipc msgpack six redis cryptography ];
-
-  meta = with stdenv.lib; {
-    description = "Redis-backed ASGI channel layer implementation";
-    license = licenses.bsd3;
-    homepage = https://github.com/django/asgi_redis/;
-  };
-}
diff --git a/pkgs/development/python-modules/asgiref/default.nix b/pkgs/development/python-modules/asgiref/default.nix
index 223f53698e95..a556cd3c87f2 100644
--- a/pkgs/development/python-modules/asgiref/default.nix
+++ b/pkgs/development/python-modules/asgiref/default.nix
@@ -1,15 +1,23 @@
-{ stdenv, buildPythonPackage, fetchurl, six }:
+{ stdenv, buildPythonPackage, fetchFromGitHub, async-timeout, pytest, pytest-asyncio }:
 buildPythonPackage rec {
-  version = "2.1.5";
+  version = "2.2.0";
   pname = "asgiref";
-  name = "${pname}-${version}";
 
-  src = fetchurl {
-    url = "mirror://pypi/a/asgiref/${name}.tar.gz";
-    sha256 = "1a46196df28c67e046a54cc537ce5a8f6a59eb68649f54680d7e4fc3b113ab1b";
+  # PyPI tarball doesn't include tests directory
+  src = fetchFromGitHub {
+    owner = "django";
+    repo = pname;
+    rev = version;
+    sha256 = "0jsdkgwzswm1jbfm6d100yfvfzpic8v6ysydcnn798bbpwclj8ip";
   };
 
-  propagatedBuildInputs = [ six ];
+  propagatedBuildInputs = [ async-timeout ];
+
+  checkInputs = [ pytest pytest-asyncio ];
+
+  checkPhase = ''
+    py.test
+  '';
 
   meta = with stdenv.lib; {
     description = "Reference ASGI adapters and channel layers";
diff --git a/pkgs/development/python-modules/astral/default.nix b/pkgs/development/python-modules/astral/default.nix
index c6a3ac47aa70..488c5ed66512 100644
--- a/pkgs/development/python-modules/astral/default.nix
+++ b/pkgs/development/python-modules/astral/default.nix
@@ -1,19 +1,21 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytz, pytest }:
+{ stdenv, buildPythonPackage, fetchPypi, pytz, requests, pytest }:
 
 buildPythonPackage rec {
   pname = "astral";
-  version = "1.5";
+  version = "1.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "527628fbfe90c1596c3950ff84ebd07ecc10c8fb1044c903a0519b5057700cb6";
+    sha256 = "874b397ddbf0a4c1d8d644b21c2481e8a96b61343f820ad52d8a322d61a15083";
   };
 
-  propagatedBuildInputs = [ pytz ];
+  propagatedBuildInputs = [ pytz requests ];
 
   checkInputs = [ pytest ];
   checkPhase = ''
-    py.test -k "not test_GoogleLocator"
+    # https://github.com/sffjunkie/astral/pull/13
+    touch src/test/.api_key
+    py.test -m "not webtest"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/asynctest/default.nix b/pkgs/development/python-modules/asynctest/default.nix
index 2b0348a87581..a0f408764a0d 100644
--- a/pkgs/development/python-modules/asynctest/default.nix
+++ b/pkgs/development/python-modules/asynctest/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "asynctest";
-  version = "0.11.1";
+  version = "0.12.0";
 
   disabled = pythonOlder "3.4";
 
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     owner = "Martiusweb";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1vvh5vbq2fbz6426figs85z8779r7svb4dp2v3xynhhv05nh2y6v";
+    sha256 = "0rcb3kz2m0iwvgxpx2avfz9cqsd9xbaq93zykr2fki3ikmnp3vyg";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/behave/default.nix b/pkgs/development/python-modules/behave/default.nix
index 80acc58f6544..60160b128a46 100644
--- a/pkgs/development/python-modules/behave/default.nix
+++ b/pkgs/development/python-modules/behave/default.nix
@@ -5,14 +5,14 @@
 }:
 buildPythonApplication rec {
   pname = "behave";
-  version = "1.2.5";
+  version = "1.2.6";
   name = "${pname}-${version}";
 
   disabled = pythonAtLeast "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "81b731ac5187e31e4aad2594944fa914943683a9818320846d037c5ebd6d5d0b";
+    sha256 = "b9662327aa53294c1351b0a9c369093ccec1d21026f050c3bd9b3e5cccf81a86";
   };
 
   checkInputs = [ mock nose pyhamcrest ];
diff --git a/pkgs/development/python-modules/bibtexparser/default.nix b/pkgs/development/python-modules/bibtexparser/default.nix
index 50e389a9e14b..06d7c689e659 100644
--- a/pkgs/development/python-modules/bibtexparser/default.nix
+++ b/pkgs/development/python-modules/bibtexparser/default.nix
@@ -1,20 +1,31 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, pyparsing
+, future
+, nose
+, glibcLocales
 }:
 
 buildPythonPackage rec {
   pname = "bibtexparser";
   version = "1.0.1";
-  name = "${pname}-${version}";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cc41cdd8332c2bf44b97daf1f135f4f267c3b744c33976655cd270b66f964c0a";
+  # PyPI tarball does not ship tests
+  src = fetchFromGitHub {
+    owner = "sciunto-org";
+    repo = "python-${pname}";
+    rev = "v${version}";
+    sha256 = "0lmlarkfbq2hp1wa04a62245jr2mqizqsdlgilj5aq6vy92gr6ai";
   };
 
-  # No tests in archive
-  doCheck = false;
+  propagatedBuildInputs = [ pyparsing future ];
+
+  checkInputs = [ nose glibcLocales ];
+
+  checkPhase = ''
+    LC_ALL="en_US.UTF-8" nosetests
+  '';
 
   meta = {
     description = "Bibtex parser for python 2.7 and 3.3 and newer";
diff --git a/pkgs/development/python-modules/binaryornot/default.nix b/pkgs/development/python-modules/binaryornot/default.nix
new file mode 100644
index 000000000000..2f0b01a5c23d
--- /dev/null
+++ b/pkgs/development/python-modules/binaryornot/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, chardet, hypothesis }:
+
+buildPythonPackage rec {
+  pname = "binaryornot";
+  version = "0.4.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061";
+  };
+
+  prePatch = ''
+    # See https://github.com/audreyr/binaryornot/issues/40
+    substituteInPlace tests/test_check.py \
+      --replace "average_size=512" "average_size=128"
+  '';
+
+  propagatedBuildInputs = [ chardet ];
+
+  checkInputs = [ hypothesis ];
+
+  meta = with lib; {
+    homepage = https://github.com/audreyr/binaryornot;
+    description = "Ultra-lightweight pure Python package to check if a file is binary or text";
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/development/python-modules/blaze/default.nix b/pkgs/development/python-modules/blaze/default.nix
index 74e327fd3423..b3c56a618e8e 100644
--- a/pkgs/development/python-modules/blaze/default.nix
+++ b/pkgs/development/python-modules/blaze/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchurl
+, fetchFromGitHub
 , pytest
 , contextlib2
 , cytoolz
@@ -27,9 +27,11 @@ buildPythonPackage rec {
   pname = "blaze";
   version = "0.11.3";
 
-  src = fetchurl {
-    url = "https://github.com/blaze/blaze/archive/${version}.tar.gz";
-    sha256 = "075gqc9d7g284z4nfwv5zbq99ln22w25l4lcndjg3v10kmsjadww";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "0w916k125058p40cf7i090f75pgv3cqdb8vwjzqhb9r482fa6717";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/bleach/default.nix b/pkgs/development/python-modules/bleach/default.nix
index e4ccb0c92d66..786564b92e01 100644
--- a/pkgs/development/python-modules/bleach/default.nix
+++ b/pkgs/development/python-modules/bleach/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "bleach";
-  version = "2.1.2";
+  version = "2.1.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "38fc8cbebea4e787d8db55d6f324820c7f74362b70db9142c1ac7920452d1a19";
+    sha256 = "eb7386f632349d10d9ce9d4a838b134d4731571851149f9cc2c05a9a837a9a44";
   };
 
   checkInputs = [ pytest pytestrunner ];
@@ -41,4 +41,4 @@ buildPythonPackage rec {
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ prikhi ];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/blinkstick/default.nix b/pkgs/development/python-modules/blinkstick/default.nix
new file mode 100644
index 000000000000..96f7bfebdeb8
--- /dev/null
+++ b/pkgs/development/python-modules/blinkstick/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, pyusb }:
+
+buildPythonPackage rec {
+  pname = "BlinkStick";
+  version = "1.1.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "3edf4b83a3fa1a7bd953b452b76542d54285ff6f1145b6e19f9b5438120fa408";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = https://github.com/arvydas/blinkstick-python/commit/a9227d0.patch;
+      sha256 = "1mcmxlnkbfxwp84qz32l5rlc7r9anh9yhnqaj1y8rny5s13jb01f";
+    })
+    (fetchpatch {
+      url = https://github.com/arvydas/blinkstick-python/pull/54.patch;
+      sha256 = "1gjq6xbai794bbdyrv82i96l1a7qkwvlhzd6sa937dy5ivv6s6hl";
+    })
+  ];
+
+  propagatedBuildInputs = [ pyusb ];
+
+  meta = with lib; {
+    description = "Python package to control BlinkStick USB devices";
+    homepage = https://pypi.python.org/pypi/BlinkStick/;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ np ];
+  };
+}
diff --git a/pkgs/development/python-modules/bootstrapped-pip/default.nix b/pkgs/development/python-modules/bootstrapped-pip/default.nix
index 37c3ea5d72ac..86e45e17ed55 100644
--- a/pkgs/development/python-modules/bootstrapped-pip/default.nix
+++ b/pkgs/development/python-modules/bootstrapped-pip/default.nix
@@ -9,9 +9,9 @@ let
   };
   setuptools_source = fetchPypi {
     pname = "setuptools";
-    version = "38.4.0";
+    version = "38.4.1";
     format = "wheel";
-    sha256 = "155c2ec9fdcc00c3973d966b416e1cf3a1e7ce75f4c09fb760b23f94b935926e";
+    sha256 = "22f8bcff5ce7fd1867785701769eaba42b79331d0abf890974a9288787dc015b";
   };
 
   # TODO: Shouldn't be necessary anymore for pip > 9.0.1!
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index eaab00312055..ccada6dd1404 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -13,13 +13,13 @@
 
 buildPythonPackage rec {
   pname =  "boto3";
-  version = "1.4.8";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "boto";
     repo  = "boto3";
     rev   = version;
-    sha256 = "11ysd7a9l5y98q7b7az56phsj2m7w90abf4jabwrknp2c43sq9bi";
+    sha256 = "14d60wc5kff2gjkrm0yfz0179s0qg3f1qqldv8hnf37ny6yvfwn3";
   };
 
   propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
diff --git a/pkgs/development/python-modules/botocore/default.nix b/pkgs/development/python-modules/botocore/default.nix
index e363136615ea..5276fdb9329d 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -12,11 +12,11 @@
 buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "botocore";
-  version = "1.8.45";
+  version = "1.9.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8f91b648a216dc945783d1539c013fc08a9e65ecc4fc5aae017bdd5961fd3468";
+    sha256 = "d5b892ab86cd3e8d6cb570dd5275bf1c600cbbf9f07a40a22bcdd9023c0e844f";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/buildout-nix/default.nix b/pkgs/development/python-modules/buildout-nix/default.nix
index c4cde583f05b..5c21757421b2 100644
--- a/pkgs/development/python-modules/buildout-nix/default.nix
+++ b/pkgs/development/python-modules/buildout-nix/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "zc.buildout";
-  version = "2.11.0";
+  version = "2.11.1";
   name = "${pname}-nix-${version}";
 
   src = fetchurl {
     url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "092b0a147d5fb4e79ee0afde665570f85738e714463854f9e4f7f38d0b27ea82";
+    sha256 = "08017dcd8f4b60b48b7d830da835a9350c07e7f383fa56d45925ab5144400281";
   };
 
   patches = [ ./nix.patch ];
diff --git a/pkgs/development/python-modules/cached-property/default.nix b/pkgs/development/python-modules/cached-property/default.nix
index 6ab5015a1e79..5daa505429ed 100644
--- a/pkgs/development/python-modules/cached-property/default.nix
+++ b/pkgs/development/python-modules/cached-property/default.nix
@@ -1,19 +1,28 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, pytest
 , freezegun
 }:
 
 buildPythonPackage rec {
   pname = "cached-property";
-  version = "1.3.1";
+  version = "1.4.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6562f0be134957547421dda11640e8cadfa7c23238fc4e0821ab69efdb1095f3";
+  # conftest.py is missing in PyPI tarball
+  # https://github.com/pydanny/cached-property/pull/87
+  src = fetchFromGitHub {
+    owner = "pydanny";
+    repo = pname;
+    rev = version;
+    sha256 = "0w7709grs4yqhfbnn7lva2fgyphvh43xcfqhi95lhh8sjad3xwkw";
   };
 
-  checkInputs = [ freezegun ];
+  checkInputs = [ pytest freezegun ];
+
+  checkPhase = ''
+    py.test
+  '';
 
   meta = {
     description = "A decorator for caching properties in classes";
@@ -22,4 +31,4 @@ buildPythonPackage rec {
     platforms = lib.platforms.unix;
     maintainers = with lib.maintainers; [ ericsagnes ];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/cachetools/1.nix b/pkgs/development/python-modules/cachetools/1.nix
index edfe965fa800..6daa735cfaed 100644
--- a/pkgs/development/python-modules/cachetools/1.nix
+++ b/pkgs/development/python-modules/cachetools/1.nix
@@ -3,12 +3,12 @@
 buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "cachetools";
-  version = "1.1.3";
+  version = "2.0.1";
   disabled = isPyPy;  # a test fails
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0js7qx5pa8ibr8487lcf0x3a7w0xml0wa17snd6hjs0857kqhn20";
+    sha256 = "ede01f2d3cbd6ddc9e35e16c2b0ce011d8bb70ce0dbaf282f5b4df24b213bc5d";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/can/default.nix b/pkgs/development/python-modules/can/default.nix
index fbb53828d2af..395122b4da9e 100644
--- a/pkgs/development/python-modules/can/default.nix
+++ b/pkgs/development/python-modules/can/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "python-can";
-  version = "2.0.0";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1c6zfd29ck9ffdklfb5xgxvfl52xdaqd89isykkypm1ll97yk2fs";
+    sha256 = "4a5c01dd67feeda35f88e6c12ea14ac8cabd426b9be0cc5f9fd083fe90a9dbfc";
   };
 
   propagatedBuildInputs = [ pyserial ];
diff --git a/pkgs/development/python-modules/cffi/default.nix b/pkgs/development/python-modules/cffi/default.nix
index 5e186a8f2f8d..cd643806c3a7 100644
--- a/pkgs/development/python-modules/cffi/default.nix
+++ b/pkgs/development/python-modules/cffi/default.nix
@@ -2,12 +2,12 @@
 
 if isPyPy then null else buildPythonPackage rec {
   pname = "cffi";
-  version = "1.11.4";
+  version = "1.11.5";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "df9083a992b17a28cd4251a3f5c879e0198bb26c9e808c4647e0a18739f1d11d";
+    sha256 = "e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/python-modules/chainer/default.nix b/pkgs/development/python-modules/chainer/default.nix
index b7a58f11a15b..31cd0236a59f 100644
--- a/pkgs/development/python-modules/chainer/default.nix
+++ b/pkgs/development/python-modules/chainer/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "chainer";
-  version = "3.3.0";
+  version = "3.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0669375e5b09d687781a37d6c025ee0a6015f575b4d2c70a2ad09c33b8228f86";
+    sha256 = "b7bcd8fc1a39b3602b4a78a0be6012721ba6c8792c4d14773496a4c6d038f886";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/codecov/default.nix b/pkgs/development/python-modules/codecov/default.nix
index 93620098446a..6b2063f49922 100644
--- a/pkgs/development/python-modules/codecov/default.nix
+++ b/pkgs/development/python-modules/codecov/default.nix
@@ -2,15 +2,14 @@
 
 buildPythonPackage rec {
   pname = "codecov";
-  version = "2.0.9";
-  name = "${pname}-${version}";
+  version = "2.0.15";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "037h4dcl8xshlq3rj8409p11rpgnyqrhlhfq8j34s94nm0n1h76v";
+    sha256 = "8ed8b7c6791010d359baed66f84f061bba5bd41174bf324c31311e8737602788";
   };
 
-  buildInputs = [ unittest2 ]; # Tests only
+  checkInputs = [ unittest2 ]; # Tests only
 
   propagatedBuildInputs = [ requests coverage ];
 
@@ -18,6 +17,9 @@ buildPythonPackage rec {
     sed -i 's/, "argparse"//' setup.py
   '';
 
+  # No tests in archive
+  doCheck = false;
+
   meta = {
     description = "Python report uploader for Codecov";
     homepage = https://codecov.io/;
diff --git a/pkgs/development/python-modules/colander/default.nix b/pkgs/development/python-modules/colander/default.nix
new file mode 100644
index 000000000000..ed27464d1fe0
--- /dev/null
+++ b/pkgs/development/python-modules/colander/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi
+, translationstring, iso8601 }:
+
+buildPythonPackage rec {
+  pname = "colander";
+  version = "1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "e20e9acf190e5711cf96aa65a5405dac04b6e841028fc361d953a9923dbc4e72";
+  };
+
+  propagatedBuildInputs = [ translationstring iso8601 ];
+
+  meta = with lib; {
+    description = "A simple schema-based serialization and deserialization library";
+    homepage = https://docs.pylonsproject.org/projects/colander/en/latest/;
+    license = licenses.free; # http://repoze.org/LICENSE.txt
+    maintainers = with maintainers; [ garbas domenkozar ];
+  };
+}
diff --git a/pkgs/development/python-modules/commonmark/default.nix b/pkgs/development/python-modules/commonmark/default.nix
new file mode 100644
index 000000000000..d6cd69f6c8ae
--- /dev/null
+++ b/pkgs/development/python-modules/commonmark/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, glibcLocales, future }:
+
+buildPythonPackage rec {
+  pname = "CommonMark";
+  version = "0.7.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4dfbbd1dbc669a9b71a015032b2bbe5c4b019ca8b6ca410d89cf7020de46d2c0";
+  };
+
+  preCheck = ''
+    export LC_ALL="en_US.UTF-8"
+  '';
+
+  # UnicodeEncodeError on Python 2
+  doCheck = isPy3k;
+
+  checkInputs = [  glibcLocales ];
+  propagatedBuildInputs = [ future ];
+
+  meta = with lib; {
+    description = "Python parser for the CommonMark Markdown spec";
+    homepage = https://github.com/rolandshoemaker/CommonMark-py;
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/development/python-modules/construct/default.nix b/pkgs/development/python-modules/construct/default.nix
index 78aa0aab5c08..afba2e17bf64 100644
--- a/pkgs/development/python-modules/construct/default.nix
+++ b/pkgs/development/python-modules/construct/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub, six, pythonOlder }:
+{ stdenv, buildPythonPackage, fetchFromGitHub, six, pytest, pythonOlder }:
 
 buildPythonPackage rec {
   pname = "construct";
@@ -14,15 +14,16 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ six ];
 
-  # Tests fail with the following error on Python 3.5+
-  # TypeError: not all arguments converted during string formatting
-  doCheck = pythonOlder "3.5";
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    py.test -k 'not test_numpy' tests
+  '';
 
   meta = with stdenv.lib; {
     description = "Powerful declarative parser (and builder) for binary data";
     homepage = http://construct.readthedocs.org/;
     license = licenses.mit;
-    platforms = platforms.linux;
     maintainers = with maintainers; [ bjornfor ];
   };
 }
diff --git a/pkgs/development/python-modules/cram/default.nix b/pkgs/development/python-modules/cram/default.nix
index c0fc5b177e0a..232a4a19fd85 100644
--- a/pkgs/development/python-modules/cram/default.nix
+++ b/pkgs/development/python-modules/cram/default.nix
@@ -1,11 +1,10 @@
-{stdenv, lib, buildPythonPackage, fetchPypi, coverage, bash, which, writeText}:
+{stdenv, lib, buildPythonPackage, fetchPypi, bash, which, writeText}:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   version = "0.7";
   pname = "cram";
 
-  buildInputs = [ coverage which ];
+  checkInputs = [ which ];
 
   src = fetchPypi {
     inherit pname version;
@@ -13,20 +12,13 @@ buildPythonPackage rec {
   };
 
   postPatch = ''
+    patchShebangs scripts/cram
     substituteInPlace tests/test.t \
       --replace "/bin/bash" "${bash}/bin/bash"
   '';
 
-  # This testing is copied from Makefile. Simply using `make test` doesn't work
-  # because it uses the unpatched `scripts/cram` executable which has a bad
-  # shebang. Also, for some reason, coverage fails on one file so let's just
-  # ignore that one.
   checkPhase = ''
-    # scripts/cram tests
-    #COVERAGE=${coverage}/bin/coverage $out/bin/cram tests
-    #${coverage}/bin/coverage report --fail-under=100
-    COVERAGE=coverage $out/bin/cram tests
-    coverage report --fail-under=100 --omit="*/_encoding.py,*/__main__.py"
+    scripts/cram tests
   '';
 
   meta = {
diff --git a/pkgs/development/python-modules/credstash/default.nix b/pkgs/development/python-modules/credstash/default.nix
index 6a9e1240b864..8be1780aa992 100644
--- a/pkgs/development/python-modules/credstash/default.nix
+++ b/pkgs/development/python-modules/credstash/default.nix
@@ -1,15 +1,20 @@
-{ stdenv, buildPythonPackage, fetchPypi, cryptography, boto3, pyyaml, docutils }:
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, cryptography, boto3, pyyaml, docutils }:
 
 buildPythonPackage rec {
-  pname    = "credstash";
+  pname = "credstash";
   version = "1.14.0";
-  name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "718b337f7a6fa001e014386071f05c59900525d0507009126d2fe8d75fe0761d";
   };
 
+  patches = fetchpatch {
+    url = https://github.com/fugue/credstash/pull/178.patch;
+    sha256 = "15ih4h5v63g7qfmqdl4zca147wkcrx8vnsh4ns33001dipcfb5sc";
+    excludes = [ ".travis.yml" ];
+  };
+
   propagatedBuildInputs = [ cryptography boto3 pyyaml docutils ];
 
   # No tests in archive
diff --git a/pkgs/development/python-modules/csvkit/default.nix b/pkgs/development/python-modules/csvkit/default.nix
index bfabf4376e7a..badf33f8c12e 100644
--- a/pkgs/development/python-modules/csvkit/default.nix
+++ b/pkgs/development/python-modules/csvkit/default.nix
@@ -1,28 +1,38 @@
-{ stdenv, fetchPypi, buildPythonPackage,
-  dateutil, dbf, xlrd, sqlalchemy, openpyxl,
- agate-excel, agate-dbf, agate-sql, isPy3k }:
+{ lib, fetchPypi, buildPythonPackage, isPy3k
+, agate, agate-excel, agate-dbf, agate-sql, six
+, argparse, ordereddict, simplejson
+, glibcLocales, nose, mock, unittest2
+}:
 
 buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "csvkit";
-    version = "1.0.2";
+  pname = "csvkit";
+  version = "1.0.2";
 
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "05vfsba9nwh4islszgs18rq8sjkpzqni0cdwvvkw7pi0r63pz2as";
-    };
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "05vfsba9nwh4islszgs18rq8sjkpzqni0cdwvvkw7pi0r63pz2as";
+  };
 
-    propagatedBuildInputs = [ dateutil dbf xlrd sqlalchemy openpyxl
-      agate-excel agate-dbf agate-sql ];
+  propagatedBuildInputs = [
+    agate agate-excel agate-dbf agate-sql six
+  ] ++ lib.optionals (!isPy3k) [
+    argparse ordereddict simplejson
+  ];
 
-    doCheck = !isPy3k;
-    # (only) python 3 we had 9 failures and 57 errors out of a much larger
-    # number of tests.
+  checkInputs = [
+    glibcLocales nose
+  ] ++ lib.optionals (!isPy3k) [
+    mock unittest2
+  ];
 
-    meta = with stdenv.lib; {
-      description = "A library of utilities for working with CSV, the king of tabular file formats";
-      maintainers = with maintainers; [ vrthra ];
-      license = with licenses; [ mit ];
-      homepage = https://github.com/wireservice/csvkit;
-    };
+  checkPhase = ''
+    LC_ALL="en_US.UTF-8" nosetests -e test_csvsql
+  '';
+
+  meta = with lib; {
+    description = "A library of utilities for working with CSV, the king of tabular file formats";
+    maintainers = with maintainers; [ vrthra ];
+    license = with licenses; [ mit ];
+    homepage = https://github.com/wireservice/csvkit;
+  };
 }
diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix
index e020eafc04c8..bfb296470cf4 100644
--- a/pkgs/development/python-modules/cupy/default.nix
+++ b/pkgs/development/python-modules/cupy/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "cupy";
-  version = "2.3.0";
+  version = "2.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7426f6332cb01513d2a6a687792dfa17c678ff64dd1b19b04559ddd5672c833f";
+    sha256 = "96ac44dface1a73673e9c0549fc897f8fa31a7648ff9963dff799ddabd67fde2";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/curtsies/default.nix b/pkgs/development/python-modules/curtsies/default.nix
index 8d6052c5299f..d29ad1d64745 100644
--- a/pkgs/development/python-modules/curtsies/default.nix
+++ b/pkgs/development/python-modules/curtsies/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, blessings, mock, nose, pyte, pytest, wcwidth }:
+{ stdenv, buildPythonPackage, fetchPypi, blessings, mock, nose, pyte, wcwidth, typing }:
 
 buildPythonPackage rec {
   pname = "curtsies";
@@ -8,12 +8,12 @@ buildPythonPackage rec {
     sha256 = "89c802ec051d01dec6fc983e9856a3706e4ea8265d2940b1f6d504a9e26ed3a9";
   };
 
-  propagatedBuildInputs = [ blessings wcwidth pyte ];
+  propagatedBuildInputs = [ blessings wcwidth typing ];
 
-  checkInputs = [ nose mock pytest ];
+  checkInputs = [ mock pyte nose ];
 
   checkPhase = ''
-    py.test
+    nosetests tests
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/cx_oracle/default.nix b/pkgs/development/python-modules/cx_oracle/default.nix
new file mode 100644
index 000000000000..e63c4107e091
--- /dev/null
+++ b/pkgs/development/python-modules/cx_oracle/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, oracle-instantclient }:
+
+buildPythonPackage rec {
+  pname = "cx_Oracle";
+  version = "6.1";
+
+  buildInputs = [
+    oracle-instantclient
+  ];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "80545fc7acbdda917dd2b1604c938141256bdfed3ad464a44586c9c2f09c3004";
+  };
+
+  # Check need an Oracle database to run  
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python interface to Oracle";
+    homepage = "https://oracle.github.io/python-cx_Oracle";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ y0no ];
+  };
+}
diff --git a/pkgs/development/python-modules/daphne/default.nix b/pkgs/development/python-modules/daphne/default.nix
index 86b00ca74085..7ead1cacfa66 100644
--- a/pkgs/development/python-modules/daphne/default.nix
+++ b/pkgs/development/python-modules/daphne/default.nix
@@ -1,19 +1,31 @@
-{ stdenv, buildPythonPackage, fetchPypi,
-  asgiref, autobahn, twisted, hypothesis
+{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub
+, asgiref, autobahn, twisted, pytestrunner
+, hypothesis, pytest, pytest-asyncio
 }:
 buildPythonPackage rec {
   pname = "daphne";
-  name = "${pname}-${version}";
-  version = "2.0.3";
+  version = "2.1.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "bb2075ce35ca00f2e5440cc034dfebd5c00d346de62ea45f099db089b868c31f";
+  disabled = !isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "django";
+    repo = pname;
+    rev = version;
+    sha256 = "1lbpn0l796ar77amqy8dap30zxmsn6as8y2lbmp4lk8m9awscwi8";
   };
 
-  buildInputs = [ hypothesis ];
+  nativeBuildInputs = [ pytestrunner ];
+
   propagatedBuildInputs = [ asgiref autobahn twisted ];
 
+  checkInputs = [ hypothesis pytest pytest-asyncio ];
+
+  checkPhase = ''
+    # Other tests fail, seems to be due to filesystem access
+    py.test -k "test_cli or test_utils"
+  '';
+
   meta = with stdenv.lib; {
     description = "Django ASGI (HTTP/WebSocket) server";
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/dask/default.nix b/pkgs/development/python-modules/dask/default.nix
index 8a8437767d80..70b4b55f5c6e 100644
--- a/pkgs/development/python-modules/dask/default.nix
+++ b/pkgs/development/python-modules/dask/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "dask";
-  version = "0.17.0";
+  version = "0.17.1";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4d2b0754d16ddc3f87026c1fc4fa3b589d7604a41d3f6510268f172abc1d0a5e";
+    sha256 = "0a6aec8b3489419c97486afd46e30b63caafc642205726a884b7fe488906d359";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/datashape/default.nix b/pkgs/development/python-modules/datashape/default.nix
index 9177e9f0ff48..4fcb38e7b36b 100644
--- a/pkgs/development/python-modules/datashape/default.nix
+++ b/pkgs/development/python-modules/datashape/default.nix
@@ -31,8 +31,10 @@ in buildPythonPackage rec {
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ numpy multipledispatch dateutil ];
 
+  # Disable several tests
+  # https://github.com/blaze/datashape/issues/232
   checkPhase = ''
-    py.test datashape/tests
+    py.test -k "not test_validate and not test_nested_iteratables and not test_validate_dicts and not test_tuples_can_be_records_too" datashape/tests
   '';
 
   meta = {
diff --git a/pkgs/development/python-modules/dbf/default.nix b/pkgs/development/python-modules/dbf/default.nix
index 2343ea2918b1..ac8087be63ed 100644
--- a/pkgs/development/python-modules/dbf/default.nix
+++ b/pkgs/development/python-modules/dbf/default.nix
@@ -1,21 +1,24 @@
-{ stdenv, fetchPypi, buildPythonPackage, aenum, isPy3k }:
+{ stdenv, fetchPypi, buildPythonPackage, aenum, isPy3k, pythonOlder, enum34, python }:
 
 buildPythonPackage rec {
     pname = "dbf";
     version = "0.96.8";
-    name = "${pname}-${version}";
 
     src = fetchPypi {
       inherit pname version;
       sha256 = "1z8n7s4cka6x9ybh4qpfhj51v2qrk38h2f06npizzhm0hmn6r3v1";
     };
 
-    propagatedBuildInputs = [ aenum ];
+    propagatedBuildInputs = [ aenum ] ++ stdenv.lib.optional (pythonOlder "3.4") [ enum34 ];
 
     doCheck = !isPy3k;
     # tests are not yet ported.
     # https://groups.google.com/forum/#!topic/python-dbase/96rx2xmCG4w
 
+    checkPhase = ''
+      ${python.interpreter} dbf/test.py
+    '';
+
     meta = with stdenv.lib; {
       description = "Pure python package for reading/writing dBase, FoxPro, and Visual FoxPro .dbf files";
       homepage    = "https://pypi.python.org/pypi/dbf";
diff --git a/pkgs/development/python-modules/deluge-client/default.nix b/pkgs/development/python-modules/deluge-client/default.nix
new file mode 100644
index 000000000000..838cc8463872
--- /dev/null
+++ b/pkgs/development/python-modules/deluge-client/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "deluge-client";
+  version = "1.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "048zfidv08sr4hivdd3xxf1pywhqbnszj5qcn51h2f4y1588fhpf";
+  };
+
+  # it will try to connect to a running instance
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Lightweight pure-python rpc client for deluge";
+    homepage = https://github.com/JohnDoee/deluge-client;
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/diff_cover/default.nix b/pkgs/development/python-modules/diff_cover/default.nix
index b8286e7d6b1b..57f0a1ef2381 100644
--- a/pkgs/development/python-modules/diff_cover/default.nix
+++ b/pkgs/development/python-modules/diff_cover/default.nix
@@ -1,6 +1,6 @@
 { stdenv, buildPythonPackage, fetchPypi, jinja2, jinja2_pluralize, pygments,
   six, inflect, mock, nose, coverage, pycodestyle, flake8, pyflakes, git,
-  pylint, pydocstyle, fetchpatch }:
+  pylint, pydocstyle, fetchpatch, glibcLocales }:
 
 buildPythonPackage rec {
   pname = "diff_cover";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ jinja2 jinja2_pluralize pygments six inflect ];
 
-  checkInputs = [ mock nose coverage pycodestyle flake8 pyflakes pylint pydocstyle git ];
+  checkInputs = [ mock nose coverage pycodestyle flake8 pyflakes pylint pydocstyle git glibcLocales ];
 
   meta = with stdenv.lib; {
     description = "Automatically find diff lines that need test coverage";
diff --git a/pkgs/development/python-modules/discid/default.nix b/pkgs/development/python-modules/discid/default.nix
index d237f366fdf5..f3d403d9f2c3 100644
--- a/pkgs/development/python-modules/discid/default.nix
+++ b/pkgs/development/python-modules/discid/default.nix
@@ -10,15 +10,17 @@ buildPythonPackage rec {
     sha256 = "78a3bf6c8377fdbe3d85e914a209ff97aa43e35605779639847b510ced31f7b9";
   };
 
-  patchPhase = ''
-    substituteInPlace discid/libdiscid.py \
-      --replace '_open_library(_LIB_NAME)' "_open_library('${libdiscid}/lib/libdiscid.so.0')"
-  '';
+  patchPhase =
+    let extension = stdenv.hostPlatform.extensions.sharedLibrary; in
+    ''
+      substituteInPlace discid/libdiscid.py \
+        --replace "_open_library(_LIB_NAME)" \
+                  "_open_library('${libdiscid}/lib/libdiscid${extension}')"
+    '';
 
   meta = with stdenv.lib; {
     description = "Python binding of libdiscid";
     homepage    = "https://python-discid.readthedocs.org/";
     license     = licenses.lgpl3Plus;
-    platforms   = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/distro/default.nix b/pkgs/development/python-modules/distro/default.nix
index 36264921f64d..da6984c9be9e 100644
--- a/pkgs/development/python-modules/distro/default.nix
+++ b/pkgs/development/python-modules/distro/default.nix
@@ -1,7 +1,6 @@
 { stdenv, fetchPypi, buildPythonPackage, pytest, pytestcov, tox }:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "distro";
   version = "1.2.0";
 
diff --git a/pkgs/development/python-modules/dj-database-url/default.nix b/pkgs/development/python-modules/dj-database-url/default.nix
new file mode 100644
index 000000000000..f334b7efeac6
--- /dev/null
+++ b/pkgs/development/python-modules/dj-database-url/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "dj-database-url";
+  version = "0.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163";
+  };
+
+  # Tests access a DB via network
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Use Database URLs in your Django Application";
+    homepage = https://github.com/kennethreitz/dj-database-url;
+    license = licenses.bsd2;
+  };
+}
diff --git a/pkgs/development/python-modules/django-polymorphic/default.nix b/pkgs/development/python-modules/django-polymorphic/default.nix
index 8cb68ed1e7dc..2cd112d8150e 100644
--- a/pkgs/development/python-modules/django-polymorphic/default.nix
+++ b/pkgs/development/python-modules/django-polymorphic/default.nix
@@ -1,18 +1,24 @@
-{ stdenv, buildPythonPackage, fetchPypi, django }:
+{ stdenv, buildPythonPackage, fetchFromGitHub, python, django, dj-database-url }:
 
 buildPythonPackage rec {
   pname = "django-polymorphic";
   version = "2.0.2";
-  name = "${pname}-${version}";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e1821d7b5874509a158a0f22bebf544330e0944c481c5a3e6da6cac8887e4e88";
+  # PyPI tarball is missing some test files
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "18p84kdwpfp423vb2n38h840mj3bq0j57jx3cry7c8dznpi0vfi2";
   };
 
-  checkInputs = [ django ];
+  checkInputs = [ dj-database-url ];
   propagatedBuildInputs = [ django ];
 
+  checkPhase = ''
+    ${python.interpreter} runtests.py
+  '';
+
   meta = {
     homepage = https://github.com/django-polymorphic/django-polymorphic;
     description = "Improved Django model inheritance with automatic downcasting";
diff --git a/pkgs/development/python-modules/django/2_0.nix b/pkgs/development/python-modules/django/2_0.nix
index c1f935e51c61..907d2ba6e000 100644
--- a/pkgs/development/python-modules/django/2_0.nix
+++ b/pkgs/development/python-modules/django/2_0.nix
@@ -7,13 +7,13 @@
 buildPythonPackage rec {
   pname = "Django";
   name = "${pname}-${version}";
-  version = "2.0.1";
+  version = "2.0.2";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0by1gswkrzxn594fa26llkzsc410999fq8s0b5d1598jwi5q0syr";
+    sha256 = "dc3b61d054f1bced64628c62025d480f655303aea9f408e5996c339a543b45f0";
   };
 
   patches = stdenv.lib.optionals withGdal [
diff --git a/pkgs/development/python-modules/ecpy/default.nix b/pkgs/development/python-modules/ecpy/default.nix
index 84830e7f2b83..277a5cece567 100644
--- a/pkgs/development/python-modules/ecpy/default.nix
+++ b/pkgs/development/python-modules/ecpy/default.nix
@@ -1,12 +1,13 @@
-{ stdenv, fetchPypi, buildPythonPackage, hidapi
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k, hidapi
 , pycrypto, pillow, protobuf, future, ecpy
 }:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "ECPy";
   version = "0.8.3";
 
+  disabled = !isPy3k;
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "ef3d95419d53368f52fb7d4b883b8df0dfc2dd19a76243422d24981c3e5f27bd";
diff --git a/pkgs/development/python-modules/faker/default.nix b/pkgs/development/python-modules/faker/default.nix
index 2d459d625d0a..55750f5bf3b4 100644
--- a/pkgs/development/python-modules/faker/default.nix
+++ b/pkgs/development/python-modules/faker/default.nix
@@ -1,6 +1,6 @@
 { lib, buildPythonPackage, fetchPypi, pythonOlder,
   # Build inputs
-  dateutil, six, ipaddress ? null,
+  dateutil, six, text-unidecode, ipaddress ? null,
   # Test inputs
   email_validator, nose, mock, ukpostcodeparser }:
 
@@ -8,12 +8,11 @@ assert pythonOlder "3.3" -> ipaddress != null;
 
 buildPythonPackage rec {
   pname = "Faker";
-  version = "0.8.8";
-  name = "${pname}-${version}";
+  version = "0.8.11";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e928cf853ef69d7471421f2a3716a1239e43de0fa9855f4016ee0c9f1057328a";
+    sha256 = "126kdy6lj10rwgchzz0lzjabx0zcyskamhn0qib67k69fcksjmq8";
   };
 
   checkInputs = [
@@ -26,6 +25,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     dateutil
     six
+    text-unidecode
   ] ++ lib.optional (pythonOlder "3.3") ipaddress;
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/flake8-debugger/default.nix b/pkgs/development/python-modules/flake8-debugger/default.nix
index 9d69c0389b69..32e9a08b7414 100644
--- a/pkgs/development/python-modules/flake8-debugger/default.nix
+++ b/pkgs/development/python-modules/flake8-debugger/default.nix
@@ -1,15 +1,24 @@
-{ lib, fetchurl, buildPythonPackage, flake8, nose }:
+{ lib, fetchPypi, buildPythonPackage, flake8, pycodestyle, pytestrunner, pytest }:
 
 buildPythonPackage rec {
   pname = "flake8-debugger";
-  name = "${pname}-${version}";
   version = "3.1.0";
-  src = fetchurl {
-    url = "mirror://pypi/f/flake8-debugger/${name}.tar.gz";
+
+  src = fetchPypi {
+    inherit pname version;
     sha256 = "be4fb88de3ee8f6dd5053a2d347e2c0a2b54bab6733a2280bb20ebd3c4ca1d97";
   };
-  buildInputs = [ nose ];
-  propagatedBuildInputs = [ flake8 ];
+
+  nativeBuildInputs = [ pytestrunner ];
+
+  propagatedBuildInputs = [ flake8 pycodestyle ];
+
+  checkInputs = [ pytest ];
+
+  # Tests not included in PyPI tarball
+  # FIXME: Remove when https://github.com/JBKahn/flake8-debugger/pull/15 is merged
+  doCheck = false;
+
   meta = {
     homepage = https://github.com/jbkahn/flake8-debugger;
     description = "ipdb/pdb statement checker plugin for flake8";
diff --git a/pkgs/development/python-modules/flask-script/default.nix b/pkgs/development/python-modules/flask-script/default.nix
index ace3cee2d22e..33b44080343f 100644
--- a/pkgs/development/python-modules/flask-script/default.nix
+++ b/pkgs/development/python-modules/flask-script/default.nix
@@ -1,17 +1,20 @@
-{ lib, buildPythonPackage, fetchurl, flask, pytest }:
+{ lib, buildPythonPackage, fetchPypi, flask, pytest }:
 
 buildPythonPackage rec {
-  name = "Flask-Script-${version}";
+  pname = "Flask-Script";
   version = "2.0.6";
 
-  src = fetchurl {
-    url = "mirror://pypi/F/Flask-Script/${name}.tar.gz";
+  src = fetchPypi {
+    inherit pname version;
     sha256 = "0zqh2yq8zk7m9b4xw1ryqmrljkdigfb3hk5155a3b5hkfnn6xxyf";
   };
 
   propagatedBuildInputs = [ flask ];
   checkInputs = [ pytest ];
 
+  # No tests in archive
+  doCheck = false;
+
   meta = with lib; {
     homepage = http://github.com/smurfix/flask-script;
     description = "Scripting support for Flask";
diff --git a/pkgs/development/python-modules/fonttools/default.nix b/pkgs/development/python-modules/fonttools/default.nix
index a8a89f0e8ca7..d7e789b02fa3 100644
--- a/pkgs/development/python-modules/fonttools/default.nix
+++ b/pkgs/development/python-modules/fonttools/default.nix
@@ -3,16 +3,16 @@
 , numpy
 , pytest
 , pytestrunner
+, glibcLocales
 }:
 
 buildPythonPackage rec {
   pname = "fonttools";
-  version = "3.22.0";
-  name = "${pname}-${version}";
+  version = "3.24.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "01640dfbc0ba752181b21fe74240b8a7bbf7af75581737245836ada5565bd549";
+    sha256 = "d09126f443bc8797d1b7e76274e65f4c169c04722745953ecf536451b1d9a15f";
     extension = "zip";
   };
 
@@ -23,8 +23,13 @@ buildPythonPackage rec {
   checkInputs = [
     pytest
     pytestrunner
+    glibcLocales
   ];
 
+  preCheck = ''
+    export LC_ALL="en_US.UTF-8"
+  '';
+
   meta = {
     homepage = https://github.com/fonttools/fonttools;
     description = "A library to manipulate font files from Python";
diff --git a/pkgs/development/python-modules/ftfy/default.nix b/pkgs/development/python-modules/ftfy/default.nix
index d88c894009c1..ca1c9a09e4eb 100644
--- a/pkgs/development/python-modules/ftfy/default.nix
+++ b/pkgs/development/python-modules/ftfy/default.nix
@@ -7,18 +7,23 @@
 , python
 , isPy3k
 }:
+
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "ftfy";
-  # latest is 5.1.1, buy spaCy requires 4.4.3
-  version = "5.3.0";
+
+  version = "4.4.3";
+  # ftfy v5 only supports python3. Since at the moment the only
+  # packages that use ftfy are spacy and textacy which both support
+  # python 2 and 3, they have pinned ftfy to the v4 branch.
+  # I propose to stick to v4 until another package requires v5.
+  # At that point we can make a ftfy_v4 package.
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ba702d5138f9b35df32b55920c9466208608108f1f3d5de1a68c17e3d68cb7f";
+    sha256 = "152xdb56rhs1q4r0ck1n557sbphw7zq18r75a7kkd159ckdnc01w";
   };
 
-  propagatedBuildInputs = [ html5lib wcwidth];
+  propagatedBuildInputs = [ html5lib wcwidth ];
 
   checkInputs = [
     nose
@@ -32,13 +37,10 @@ buildPythonPackage rec {
   # FileNotFoundError: [Errno 2] No such file or directory: 'ftfy'
   doCheck = false;
 
-  # "this version of ftfy is no longer written for Python 2"
-  disabled = !isPy3k;
-
   meta = with stdenv.lib; {
     description = "Given Unicode text, make its representation consistent and possibly less broken.";
     homepage = https://github.com/LuminosoInsight/python-ftfy/tree/master/tests;
     license = licenses.mit;
-    maintainers = with maintainers; [ sdll ];
-    };
+    maintainers = with maintainers; [ sdll aborsu ];
+  };
 }
diff --git a/pkgs/development/python-modules/ftputil/default.nix b/pkgs/development/python-modules/ftputil/default.nix
new file mode 100644
index 000000000000..d3d338a2c8d3
--- /dev/null
+++ b/pkgs/development/python-modules/ftputil/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+  version = "3.4";
+  pname = "ftputil";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "374b01e174079e91babe2a462fbd6f6c00dbfbfa299dec04239ca4229fbf8762";
+  };
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    touch Makefile
+    # Disable tests that require network access or access /home
+    py.test test \
+      -k "not test_public_servers and not test_real_ftp \
+          and not test_set_parser and not test_repr"
+  '';
+
+  meta = with lib; {
+    description = "High-level FTP client library (virtual file system and more)";
+    homepage    = http://ftputil.sschwarzer.net/;
+    license     = licenses.bsd2; # "Modified BSD license, says pypi"
+  };
+}
diff --git a/pkgs/development/python-modules/google_cloud_core/default.nix b/pkgs/development/python-modules/google_cloud_core/default.nix
index c0ccef3c9591..d9111ac89159 100644
--- a/pkgs/development/python-modules/google_cloud_core/default.nix
+++ b/pkgs/development/python-modules/google_cloud_core/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-core";
-  version = "0.28.0";
+  version = "0.28.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1h8bx99ksla48zkb7bhkqy66b8prg49dp15alh851vzi9ii2zii7";
+    sha256 = "89e8140a288acec20c5e56159461d3afa4073570c9758c05d4e6cb7f2f8cc440";
   };
 
   propagatedBuildInputs = [ google_api_core grpcio ];
diff --git a/pkgs/development/python-modules/google_cloud_speech/default.nix b/pkgs/development/python-modules/google_cloud_speech/default.nix
index c24e0d88067b..9912316941f9 100644
--- a/pkgs/development/python-modules/google_cloud_speech/default.nix
+++ b/pkgs/development/python-modules/google_cloud_speech/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-speech";
-  version = "0.32.0";
+  version = "0.32.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2513725e693c3a2fdf22cb3065f3fcb39de2ab962a0cbc5de11a3889834189e1";
+    sha256 = "4f9a8ab3eb6630d0c0ca6ac15230dceba7d55d6707d162a84f255139ff780ee9";
   };
 
   propagatedBuildInputs = [ setuptools google_api_core google_gax google_cloud_core ];
diff --git a/pkgs/development/python-modules/gpapi/default.nix b/pkgs/development/python-modules/gpapi/default.nix
new file mode 100644
index 000000000000..da3bbcf28db3
--- /dev/null
+++ b/pkgs/development/python-modules/gpapi/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, protobuf, pycryptodome }:
+
+buildPythonPackage rec {
+  version = "0.4.2";
+  pname = "gpapi";
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "1fv2y3xbwn512fjxrdwgq6cz0xjd7mh54nq1f18wyz8w40vcznns";
+  };
+
+  propagatedBuildInputs = [ requests protobuf pycryptodome ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/NoMore201/googleplay-api;
+    license = licenses.gpl3;
+    description = "Google Play Unofficial Python API";
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/pkgs/development/python-modules/gplaycli/default.nix b/pkgs/development/python-modules/gplaycli/default.nix
new file mode 100644
index 000000000000..01827fc87f59
--- /dev/null
+++ b/pkgs/development/python-modules/gplaycli/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage, stdenv, libffi, isPy3k, pyasn1, clint, ndg-httpsclient
+, protobuf, requests, args, gpapi, pyaxmlparser, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  version = "3.21";
+  name = "gplaycli-${version}";
+
+  src = fetchFromGitHub {
+    owner = "matlink";
+    repo = "gplaycli";
+    rev = version;
+    sha256 = "1r5nzi9yzswam0866gypjcvv3f1rw13jwx9s49chp8byxy1dyrs2";
+  };
+
+ disabled = !isPy3k;
+
+ propagatedBuildInputs = [ libffi pyasn1 clint ndg-httpsclient protobuf requests args gpapi pyaxmlparser ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/matlink/gplaycli;
+    description = "Google Play Downloader via Command line";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/pkgs/development/python-modules/gpy/default.nix b/pkgs/development/python-modules/gpy/default.nix
index bb39746d2967..72415879b412 100644
--- a/pkgs/development/python-modules/gpy/default.nix
+++ b/pkgs/development/python-modules/gpy/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "GPy";
-  version = "1.8.5";
+  version = "1.9.2";
   name  = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1562e34629192f209273f454e41614a127c6ef04144cd0eb5992d484721d55d3";
+    sha256 = "372e43d41df5c90e0958d3073070994b351a7409c2e5fbd349cffe13bc24c10a";
   };
 
   # running tests produces "ImportError: cannot import name 'linalg_cython'"
diff --git a/pkgs/development/python-modules/green/default.nix b/pkgs/development/python-modules/green/default.nix
new file mode 100644
index 000000000000..81d2a7e204c2
--- /dev/null
+++ b/pkgs/development/python-modules/green/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, colorama, coverage, termstyle, unidecode, mock, backports_shutil_get_terminal_size }:
+
+buildPythonPackage rec {
+  pname = "green";
+  version = "2.12.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4c0c163bd2ce2da1f201eb69fd92fc24aaeab884f9e5c5a8c23d507a53336fa8";
+  };
+
+  propagatedBuildInputs = [
+    colorama coverage termstyle unidecode
+  ] ++ lib.optionals (!isPy3k) [ mock backports_shutil_get_terminal_size ];
+
+  meta = with lib; {
+    description = "Python test runner";
+    homepage = https://github.com/CleanCut/green;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/guessit/2.0.nix b/pkgs/development/python-modules/guessit/2.0.nix
index 59fb650c883d..c8f30746310a 100644
--- a/pkgs/development/python-modules/guessit/2.0.nix
+++ b/pkgs/development/python-modules/guessit/2.0.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "guessit";
-  version = "2.0.4";
+  version = "2.1.4";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1cfcgb0px6i9jl8nwkx8j06j4y6p5975a9pfmd8lcacwr8gy4wjg";
+    sha256 = "90e6f9fb49246ad27f34f8b9984357e22562ccc3059241cbc08b4fac1d401c56";
   };
 
   # Tests require more packages.
diff --git a/pkgs/development/python-modules/h11/default.nix b/pkgs/development/python-modules/h11/default.nix
new file mode 100644
index 000000000000..097495128dbd
--- /dev/null
+++ b/pkgs/development/python-modules/h11/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+  pname = "h11";
+  version = "0.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "1n9hsm1n2qq32j3hh9wj93w738bwa5nqyzxjwvirz03gp8fbn3qw";
+  };
+
+  buildInputs = [ pytest ];
+
+  meta = with lib; {
+    description = "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1";
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/ha-ffmpeg/default.nix b/pkgs/development/python-modules/ha-ffmpeg/default.nix
new file mode 100644
index 000000000000..4259b7ad0537
--- /dev/null
+++ b/pkgs/development/python-modules/ha-ffmpeg/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, ffmpeg, async-timeout }:
+
+buildPythonPackage rec {
+  pname = "ha-ffmpeg";
+  version = "1.9";
+
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0644j5fqw8p6li6nrnm1rw7nhvsixq1c7gik3f1yx50776yg05i8";
+  };
+
+  buildInputs = [ ffmpeg ];
+
+  propagatedBuildInputs = [ async-timeout ];
+
+  # only manual tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/pvizeli/ha-ffmpeg;
+    description = "Library for home-assistant to handle ffmpeg";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/hbmqtt/default.nix b/pkgs/development/python-modules/hbmqtt/default.nix
index 379aa1c3cf42..ade4111c5a3b 100644
--- a/pkgs/development/python-modules/hbmqtt/default.nix
+++ b/pkgs/development/python-modules/hbmqtt/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "hbmqtt";
-  version = "0.9.1";
+  version = "0.9.2";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "04lqqcy84f9gcwqhrlvzp689r3mkdd8ipsnfzw8gryfny4lh8wrx";
+    sha256 = "6f61e05007648a4f33e300fafcf42776ca95508ba1141799f94169427ce5018c";
   };
 
   propagatedBuildInputs = [ transitions websockets passlib docopt pyyaml ];
diff --git a/pkgs/development/python-modules/htmltreediff/default.nix b/pkgs/development/python-modules/htmltreediff/default.nix
new file mode 100644
index 000000000000..5e839e4ada9b
--- /dev/null
+++ b/pkgs/development/python-modules/htmltreediff/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage, fetchFromGitHub, isPy3k, lxml, html5lib, nose, stdenv }:
+
+buildPythonPackage rec {
+  version = "v0.1.2";
+  pname = "htmltreediff";
+
+  disabled = isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "christian-oudard";
+    repo = pname;
+    rev = version;
+    sha256 = "16mqp2jyznrw1mgd3qzybq28h2k5wz7vmmz1m6xpgscazyjhvvd1";
+  };
+
+  propagatedBuildInputs = [ lxml html5lib ];
+
+  checkInputs = [ nose ];
+
+  meta = with stdenv.lib; {
+    description = " Structure-aware diff for html and xml documents";
+    homepage = https://github.com/christian-oudard/htmltreediff;
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/pkgs/development/python-modules/hvac/default.nix b/pkgs/development/python-modules/hvac/default.nix
new file mode 100644
index 000000000000..8bc54e9226cf
--- /dev/null
+++ b/pkgs/development/python-modules/hvac/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildPythonPackage, fetchPypi, requests }:
+
+buildPythonPackage rec {
+  pname = "hvac";
+  version = "0.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2c9308334301daee3b5c6d56a032ca2c81eeb97d2777b73d795e201e8d037687";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  # Requires running a Vault server
+  doCheck = false;
+
+  meta = with lib; {
+    description = "HashiCorp Vault API client";
+    homepage = https://github.com/ianunruh/hvac;
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/hyperlink/default.nix b/pkgs/development/python-modules/hyperlink/default.nix
index 9886f705d548..53a245c45dcf 100644
--- a/pkgs/development/python-modules/hyperlink/default.nix
+++ b/pkgs/development/python-modules/hyperlink/default.nix
@@ -1,15 +1,16 @@
-{ stdenv, buildPythonPackage, fetchurl, pytest }:
+{ stdenv, buildPythonPackage, fetchPypi, idna, pytest }:
 
 buildPythonPackage rec {
   pname = "hyperlink";
-  version = "17.3.1";
-  name = pname + "-" + version;
+  version = "18.0.0";
 
-  src = fetchurl {
-    url = "mirror://pypi/h/hyperlink/${name}.tar.gz";
-    sha256 = "bc4ffdbde9bdad204d507bd8f554f16bba82dd356f6130cb16f41422909c33bc";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "f01b4ff744f14bc5d0a22a6b9f1525ab7d6312cb0ff967f59414bbac52f0a306";
   };
 
+  propagatedBuildInputs = [ idna ];
+
   checkInputs = [ pytest ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/idna-ssl/default.nix b/pkgs/development/python-modules/idna-ssl/default.nix
index 177e68f62950..b324705a152f 100644
--- a/pkgs/development/python-modules/idna-ssl/default.nix
+++ b/pkgs/development/python-modules/idna-ssl/default.nix
@@ -1,12 +1,12 @@
 { lib, buildPythonPackage, fetchPypi, idna }:
 
 buildPythonPackage rec {
-  pname = "idna_ssl";
-  version = "1.0.0";
+  pname = "idna-ssl";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1227e44039bd31e02adaeafdbba61281596d623d222643fb021f87f2144ea147";
+    sha256 = "1293f030bc608e9aa9cdee72aa93c1521bbb9c7698068c61c9ada6772162b979";
   };
 
   propagatedBuildInputs = [ idna ];
diff --git a/pkgs/development/python-modules/ipykernel/default.nix b/pkgs/development/python-modules/ipykernel/default.nix
index 018a522a591a..3f09975d66be 100644
--- a/pkgs/development/python-modules/ipykernel/default.nix
+++ b/pkgs/development/python-modules/ipykernel/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "ipykernel";
-  version = "4.8.1";
+  version = "4.8.2";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fe2837622a4121cbe42b354db1e2ab46c91e807ffcb92f4c2cfd323a75f8737f";
+    sha256 = "c091449dd0fad7710ddd9c4a06e8b9e15277da306590bc07a3a1afa6b4453c8f";
   };
 
   buildInputs = [ nose ] ++ lib.optional isPy27 mock;
diff --git a/pkgs/development/python-modules/kafka-python/default.nix b/pkgs/development/python-modules/kafka-python/default.nix
index f5392202d4da..f88a021d53d7 100644
--- a/pkgs/development/python-modules/kafka-python/default.nix
+++ b/pkgs/development/python-modules/kafka-python/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   name = "${pname}-${version}";
-  version = "1.3.5";
+  version = "1.4.1";
   pname = "kafka-python";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "19m9fdckxqngrgh0www7g8rgi7z0kq13wkhcqy1r8aa4sxad0f5j";
+    sha256 = "596e9b4e302a0dc04d35be159cf23d31c4cba73a218e16fc8cd1be0ad57f8c22";
   };
 
   checkInputs = [ pytest six mock ];
diff --git a/pkgs/development/python-modules/konfig/default.nix b/pkgs/development/python-modules/konfig/default.nix
new file mode 100644
index 000000000000..e7062bad5ee7
--- /dev/null
+++ b/pkgs/development/python-modules/konfig/default.nix
@@ -0,0 +1,48 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k, writeText, configparser, six, pytest, glibcLocales }:
+
+buildPythonPackage rec {
+  pname = "konfig";
+  version = "1.1";
+
+  # konfig unconditionaly depend on configparser, even if it is part of
+  # the standard library in python 3.2 or above.
+  disabled = isPy3k;
+
+  # PyPI tarball is missing utf8.ini, required for tests
+  src = fetchFromGitHub {
+    owner = "mozilla-services";
+    repo = pname;
+    rev = version;
+    sha256 = "1h780fbrv275dcik4cs3rincza805z6q726b48r4a0qmh5d8160c";
+  };
+
+  propagatedBuildInputs = [ configparser six ];
+
+  patches = [ (writeText "konfig.patch" ''
+    diff --git a/setup.py b/setup.py
+    index 96fd858..bb4db06 100644
+    --- a/setup.py
+    +++ b/setup.py
+    @@ -20,7 +20,7 @@ setup(name='konfig',
+           author_email="tarek@mozilla.com",
+           include_package_data=True,
+           install_requires = [
+    -        'configparser', 'argparse', 'six'
+    +        'configparser', 'six'
+           ],
+           zip_safe=False,
+           classifiers=classifiers,
+  '') ];
+
+  checkInputs = [ pytest glibcLocales ];
+
+  checkPhase = ''
+    LC_ALL=en_US.utf8 pytest -v konfig/tests
+  '';
+
+  meta = with lib; {
+    description = "Yet Another Config Parser";
+    homepage    = "https://github.com/mozilla-services/konfig";
+    license     = licenses.mpl20;
+  };
+}
diff --git a/pkgs/development/python-modules/latexcodec/default.nix b/pkgs/development/python-modules/latexcodec/default.nix
new file mode 100644
index 000000000000..3b639ee2afb9
--- /dev/null
+++ b/pkgs/development/python-modules/latexcodec/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, six }:
+
+buildPythonPackage rec {
+  pname = "latexcodec";
+  version = "1.0.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0zdd1gf24i83ykadx0y30n3001j43scqr2saql3vckk5c39dj1wn";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  meta = {
+    homepage = "https://github.com/mcmtroffaes/latexcodec";
+    description = "Lexer and codec to work with LaTeX code in Python";
+    license = stdenv.lib.licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/ldappool/default.nix b/pkgs/development/python-modules/ldappool/default.nix
new file mode 100644
index 000000000000..58ca72a3dc98
--- /dev/null
+++ b/pkgs/development/python-modules/ldappool/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, pbr, ldap, fixtures, testresources, testtools }:
+
+buildPythonPackage rec {
+  name = "ldappool-${version}";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    pname = "ldappool";
+    inherit version;
+    sha256 = "1akmzf51cjfvmd0nvvm562z1w9vq45zsx6fa72kraqgsgxhnrhqz";
+  };
+
+  nativeBuildInputs = [ pbr ];
+
+  propagatedBuildInputs = [ ldap ];
+
+  checkInputs = [ fixtures testresources testtools ];
+
+  meta = with lib; {
+    description = "A simple connector pool for python-ldap";
+    homepage = https://git.openstack.org/cgit/openstack/ldappool;
+    license = licenses.mpl20;
+  };
+}
diff --git a/pkgs/development/python-modules/libvirt/default.nix b/pkgs/development/python-modules/libvirt/default.nix
index 5dc33d2d93e1..d120c38b02cb 100644
--- a/pkgs/development/python-modules/libvirt/default.nix
+++ b/pkgs/development/python-modules/libvirt/default.nix
@@ -1,12 +1,13 @@
-{ stdenv, buildPythonPackage, fetchurl, python, pkgconfig, lxml, libvirt, nose }:
+{ stdenv, buildPythonPackage, fetchgit, python, pkgconfig, lxml, libvirt, nose }:
 
 buildPythonPackage rec {
   pname = "libvirt";
-  version = "3.10.0";
+  version = "4.1.0";
 
-  src = assert version == libvirt.version; fetchurl {
-    url = "http://libvirt.org/sources/python/${pname}-python-${version}.tar.gz";
-    sha256 = "1l0fgqjnx76pzkhq540x9sf5fgzlrn0dpay90j2m4iq8nkclcbpw";
+  src = assert version == libvirt.version; fetchgit {
+    url = git://libvirt.org/libvirt-python.git;
+    rev = "v${version}";
+    sha256 = "0z87y6qr0ypdxfanphxl7yanisd7a0b0bwhg97kii68mig5dlw9r";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/python-modules/llvmlite/default.nix b/pkgs/development/python-modules/llvmlite/default.nix
index d702d8f95b08..b420e7149d75 100644
--- a/pkgs/development/python-modules/llvmlite/default.nix
+++ b/pkgs/development/python-modules/llvmlite/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "llvmlite";
-  version = "0.21.0";
+  version = "0.22.0";
 
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3a5dd0695fdfb9fd47464cd71791b84935bf9642e11f4811d57aa1f2da8cdaa8";
+    sha256 = "a0a875f3d502f41f4a24444aa98fbf076a6bf36e2a0b3b4481b22e1c4a3acdc2";
   };
 
   propagatedBuildInputs = [ llvm ] ++ stdenv.lib.optional (pythonOlder "3.4") enum34;
diff --git a/pkgs/development/python-modules/marionette-harness/mozdevice.nix b/pkgs/development/python-modules/marionette-harness/mozdevice.nix
index 00329aa1d3f0..af26c8d071d6 100644
--- a/pkgs/development/python-modules/marionette-harness/mozdevice.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozdevice.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "mozdevice";
-  version = "0.50";
+  version = "0.52";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0cfxzhfxdphlzj80vkd3h7m0mg5w7zhb8h6f5lmybliqdiv9vz20";
+    sha256 = "5b6fcbc7179c0f09bd99f7f7c42b614bce5f39543fb18b190e408488f987d6b5";
   };
 
   propagatedBuildInputs = [ moznetwork mozprocess ];
diff --git a/pkgs/development/python-modules/marionette-harness/mozlog.nix b/pkgs/development/python-modules/marionette-harness/mozlog.nix
index 5960848ff63b..dfe91309ea40 100644
--- a/pkgs/development/python-modules/marionette-harness/mozlog.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozlog.nix
@@ -4,22 +4,25 @@
 , fetchPypi
 , isPy3k
 , blessings
+, mozterm
+, six
 , mozfile
 }:
 
 buildPythonPackage rec {
   pname = "mozlog";
-  version = "3.4";
-  name = "${pname}-${version}";
+  version = "3.7";
 
   disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1m4d9i1kzcmkhipfd5czv05f2s84j1byx3cv4y2irjmwq5v6cyiq";
+    sha256 = "414141131c4f5e7242e69a939d2b74f4ed8dbac12bef93eee4e7125cd1a131e9";
   };
 
-  propagatedBuildInputs = [ blessings mozfile ];
+  propagatedBuildInputs = [ blessings mozterm six ];
+
+  checkInputs = [ mozfile ];
 
   meta = {
     description = "Mozilla logging library";
diff --git a/pkgs/development/python-modules/marionette-harness/mozprocess.nix b/pkgs/development/python-modules/marionette-harness/mozprocess.nix
index b6bea84aa238..80b13d94a2d9 100644
--- a/pkgs/development/python-modules/marionette-harness/mozprocess.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozprocess.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "mozprocess";
-  version = "0.25";
+  version = "0.26";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0lfflwjkwvc8bqvsgdib3b78w2pms8nharh3sc3zgsrmqb1mbzks";
+    sha256 = "9f471c45bee9ff14e936c6ee216a6cc4941223659c01fa626bce628001d8485c";
   };
 
   propagatedBuildInputs = [ mozinfo ];
diff --git a/pkgs/development/python-modules/marionette-harness/mozprofile.nix b/pkgs/development/python-modules/marionette-harness/mozprofile.nix
index 5e939d4f3331..a783c125af3a 100644
--- a/pkgs/development/python-modules/marionette-harness/mozprofile.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozprofile.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "mozprofile";
-  version = "0.28";
+  version = "0.29";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15xsdhrpbg7hlr6nvb3k3ci33h786hrv12az8j2k7aa9gzjcf8nh";
+    sha256 = "92af4b9f527a18997dccb60e846e1844b2428668dadf3ccb1a8cd30c706b25c1";
   };
 
   propagatedBuildInputs = [ mozlog mozfile mozhttpd ]; 
diff --git a/pkgs/development/python-modules/marionette-harness/mozrunner.nix b/pkgs/development/python-modules/marionette-harness/mozrunner.nix
index b0c3f6d8bcfa..368ab51845c0 100644
--- a/pkgs/development/python-modules/marionette-harness/mozrunner.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozrunner.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "mozrunner";
-  version = "6.13";
+  version = "6.14";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1d5k3a0w1iyyk6l28l65j47grq87zd207h369x4vahq02nrx2g6l";
+    sha256 = "a401ea5141cdd15d8f047f19a30ccbeabeb0aea079674b684121acddc5dcf810";
   };
 
   propagatedBuildInputs = [ mozdevice mozfile mozinfo mozlog mozprocess
diff --git a/pkgs/development/python-modules/marionette-harness/mozversion.nix b/pkgs/development/python-modules/marionette-harness/mozversion.nix
index 62605a1d21d3..729f110858c8 100644
--- a/pkgs/development/python-modules/marionette-harness/mozversion.nix
+++ b/pkgs/development/python-modules/marionette-harness/mozversion.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "mozversion";
-  version = "1.4";
+  version = "1.5";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15ipddn6bpqxl590cy37fj52vgpa4faw2dax1mwvdxj7b18s3pwh";
+    sha256 = "e9b11e4a46bf7a4a11469ea4589c75f3ba50b34b7801e7edf1a09147af8bf70f";
   };
 
   propagatedBuildInputs = [ mozlog mozdevice ];
diff --git a/pkgs/development/python-modules/marisa/default.nix b/pkgs/development/python-modules/marisa/default.nix
new file mode 100644
index 000000000000..1117ba958fa4
--- /dev/null
+++ b/pkgs/development/python-modules/marisa/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, marisa, swig }:
+
+buildPythonPackage rec {
+  pname = "marisa";
+  version = "1.3.40";
+
+  src = fetchFromGitHub {
+    owner = "s-yata";
+    repo  = "marisa-trie";
+    rev   = "59e410597981475bae94d9d9eb252c1d9790dc2f";
+    sha256 = "0z4bf55np08q3cbi6gvj3cpw3zp8kf2d0jq6k74pjk066m7rapbb";
+  };
+
+  nativeBuildInputs = [ swig marisa ];
+  buildinputs = [ marisa ];
+
+  sourceRoot = "${src.name}/bindings/python";
+
+  meta = with stdenv.lib; {
+    description = "Python binding for marisa package (do not confuse with marisa-trie python bindings)";
+    homepage    = https://github.com/s-yata/marisa-trie;
+    license     = with licenses; [ bsd2 lgpl2 ];
+    maintainers = with maintainers; [ vanzef ];
+  };
+}
diff --git a/pkgs/development/python-modules/miniupnpc/default.nix b/pkgs/development/python-modules/miniupnpc/default.nix
new file mode 100644
index 000000000000..d267cb6a9762
--- /dev/null
+++ b/pkgs/development/python-modules/miniupnpc/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "miniupnpc";
+  version = "2.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0ca94zz7sr2x57j218aypxqcwkr23n8js30f3yrvvqbg929nr93y";
+  };
+
+  meta = with stdenv.lib; {
+    description = "miniUPnP client";
+    homepage = http://miniupnp.free.fr/;
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/moinmoin/default.nix b/pkgs/development/python-modules/moinmoin/default.nix
index cedd45f2f225..6891dd2b6272 100644
--- a/pkgs/development/python-modules/moinmoin/default.nix
+++ b/pkgs/development/python-modules/moinmoin/default.nix
@@ -1,13 +1,16 @@
-{ lib, buildPythonPackage, fetchurl, fetchpatch
+{ lib, buildPythonPackage, fetchurl, fetchpatch, isPy3k
 , pytest, werkzeug, pygments
 }:
 
 buildPythonPackage rec {
-  name = "moinmoin-${ver}";
-  ver = "1.9.9";
+  name = "moinmoin";
+  version = "1.9.9";
+
+  # SyntaxError in setup.py
+  disabled = isPy3k;
 
   src = fetchurl {
-    url = "http://static.moinmo.in/files/moin-${ver}.tar.gz";
+    url = "http://static.moinmo.in/files/moin-${version}.tar.gz";
     sha256 = "197ga41qghykmir80ik17f9hjpmixslv3zjgj7bj9qvs1dvdg5s3";
   };
 
diff --git a/pkgs/development/python-modules/mozterm/default.nix b/pkgs/development/python-modules/mozterm/default.nix
new file mode 100644
index 000000000000..6adba7ef2b96
--- /dev/null
+++ b/pkgs/development/python-modules/mozterm/default.nix
@@ -0,0 +1,16 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "mozterm";
+  version = "0.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4ebf8bd772d97c0f557184173f0f96cfca0abfc07e1ae975fbcfa76be50b5561";
+  };
+
+  meta = with lib; {
+    description = "Terminal abstractions built around the blessings module";
+    license = licenses.mpl20;
+  };
+}
diff --git a/pkgs/development/python-modules/msgpack-numpy/default.nix b/pkgs/development/python-modules/msgpack-numpy/default.nix
new file mode 100644
index 000000000000..0244b03c4842
--- /dev/null
+++ b/pkgs/development/python-modules/msgpack-numpy/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+, msgpack-python
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "msgpack-numpy";
+  version = "0.4.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1czf125nixzwskiqiw0145kfj15030sp334cb89gp5w4rz3h7img";
+  };
+
+  buildInputs = [
+    cython
+  ];
+
+  propagatedBuildInputs = [
+   msgpack-python
+   numpy
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} msgpack_numpy.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Practical Machine Learning for NLP in Python";
+    homepage = https://github.com/lebedov/msgpack-numpy;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ aborsu ];
+  };
+}
diff --git a/pkgs/development/python-modules/msgpack/default.nix b/pkgs/development/python-modules/msgpack/default.nix
index 2400a76bd6e1..3068a31f1e29 100644
--- a/pkgs/development/python-modules/msgpack/default.nix
+++ b/pkgs/development/python-modules/msgpack/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "msgpack";
-  version = "0.5.4";
+  version = "0.5.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13ckbs2qc4dww7fddnm9cw116j4spgxqab49ijmj6jr178ypwl80";
+    sha256 = "0ee8c8c85aa651be3aa0cd005b5931769eaa658c948ce79428766f1bd46ae2c3";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/mt-940/default.nix b/pkgs/development/python-modules/mt-940/default.nix
new file mode 100644
index 000000000000..5e2ad1d5aa2a
--- /dev/null
+++ b/pkgs/development/python-modules/mt-940/default.nix
@@ -0,0 +1,35 @@
+{ buildPythonPackage, stdenv, pytestrunner, pyyaml, pytest, enum34
+, pytestpep8, pytestflakes,fetchFromGitHub, isPy3k, lib, glibcLocales
+}:
+
+buildPythonPackage rec {
+  version = "v4.10.0";
+  pname = "mt940";
+
+  src = fetchFromGitHub {
+    owner = "WoLpH";
+    repo = pname;
+    rev = version;
+    sha256 = "1dsf2di8rr0iw2vaz6dppalby3y7i8x2bl0qjqvaiqacjxxvwj65";
+  };
+
+  patches = [
+    ./no-coverage.patch
+  ];
+
+  propagatedBuildInputs = [ pyyaml pytestrunner ]
+    ++ lib.optional (!isPy3k) enum34;
+
+  LC_ALL="en_US.UTF-8";
+
+  checkInputs = [ pytestpep8 pytestflakes pytest glibcLocales ];
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A library to parse MT940 files and returns smart Python collections for statistics and manipulation";
+    homepage = "http://pythonhosted.org/mt-940/";
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/development/python-modules/mt-940/no-coverage.patch b/pkgs/development/python-modules/mt-940/no-coverage.patch
new file mode 100644
index 000000000000..1617e6dd3947
--- /dev/null
+++ b/pkgs/development/python-modules/mt-940/no-coverage.patch
@@ -0,0 +1,26 @@
+diff --git a/pytest.ini b/pytest.ini
+index fef28f5..f366331 100644
+--- a/pytest.ini
++++ b/pytest.ini
+@@ -4,10 +4,6 @@ python_files =
+     tests/*.py
+ 
+ addopts =
+-    --cov mt940
+-    --cov-report term-missing
+-    --cov-report html
+-    --no-cov-on-fail
+     --doctest-modules
+     --pep8
+     --flakes
+diff --git a/tests/requirements.txt b/tests/requirements.txt
+index fc55572..e52cc28 100644
+--- a/tests/requirements.txt
++++ b/tests/requirements.txt
+@@ -3,6 +3,5 @@
+ -r ../docs/requirements.txt
+ pytest
+ pytest-cache
+-pytest-cover
+ pytest-flakes
+ pytest-pep8
diff --git a/pkgs/development/python-modules/murmurhash/default.nix b/pkgs/development/python-modules/murmurhash/default.nix
index 023c94cdc8ea..f689bc2ff49d 100644
--- a/pkgs/development/python-modules/murmurhash/default.nix
+++ b/pkgs/development/python-modules/murmurhash/default.nix
@@ -1,35 +1,34 @@
 { stdenv
 , buildPythonPackage
-, fetchFromGitHub
+, fetchPypi
 , cython
 , python
 }:
 
 buildPythonPackage rec {
   pname = "murmurhash";
-  version = "0.26.4";
-  name = pname + "-" + version;
+  version = "0.28.0";
 
-  src = fetchFromGitHub {
-    owner = "explosion";
-    repo = "murmurhash";
-    rev = "0.26.4";
-    sha256 = "0n2j0glhlv2yh3fjgbg4d79j1c1fpchgjd4vnpw908l9mzchhmdv";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16id8jppw8r54wisrlaaiprcszzb7d7lbpnskqn38s8i7vnkf4b5";
   };
 
   buildInputs = [
    cython
   ];
 
+  # No test
+  doCheck = false;
+
   checkPhase = ''
-    cd murmurhash/tests
-    ${python.interpreter} -m unittest discover -p "*test*"
+    pytest murmurhash
   '';
 
   meta = with stdenv.lib; {
     description = "Cython bindings for MurmurHash2";
     homepage = https://github.com/explosion/murmurhash;
     license = licenses.mit;
-    maintainers = with maintainers; [ sdll ];
-    };
+    maintainers = with maintainers; [ aborsu sdll ];
+  };
 }
diff --git a/pkgs/development/python-modules/mysqlclient/default.nix b/pkgs/development/python-modules/mysqlclient/default.nix
new file mode 100644
index 000000000000..0be0f892d731
--- /dev/null
+++ b/pkgs/development/python-modules/mysqlclient/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchPypi, libmysql }:
+
+buildPythonPackage rec {
+  pname = "mysqlclient";
+  version = "1.3.12";
+
+  buildInputs = [
+    libmysql
+  ];
+
+  # Tests need a MySQL database
+  doCheck = false;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2d9ec33de39f4d9c64ad7322ede0521d85829ce36a76f9dd3d6ab76a9c8648e5";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Python interface to MySQL";
+    homepage = "https://github.com/PyMySQL/mysqlclient-python";
+    license = licenses.gpl1;
+    maintainers = with maintainers; [ y0no ];
+  };
+}
diff --git a/pkgs/development/python-modules/neovim/default.nix b/pkgs/development/python-modules/neovim/default.nix
index 6fcd82aca9e5..c4b2a7e9cc89 100644
--- a/pkgs/development/python-modules/neovim/default.nix
+++ b/pkgs/development/python-modules/neovim/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "neovim";
-  version = "0.2.1";
+  version = "0.2.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16vzxmp7f6dl20n30j5cwwvrjj5h3c2ch8ldbss31anf36nirsdp";
+    sha256 = "989d720dc7636aa4260aa7774fa79aa524f51515b262eb8d7e9ba4336f758a99";
   };
 
   checkInputs = [ nose ];
diff --git a/pkgs/development/python-modules/netdisco/default.nix b/pkgs/development/python-modules/netdisco/default.nix
index 96de3ee2836a..b9b50d98ebf3 100644
--- a/pkgs/development/python-modules/netdisco/default.nix
+++ b/pkgs/development/python-modules/netdisco/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, requests, zeroconf, netifaces, pytest }:
+{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, fetchpatch, requests, zeroconf, netifaces, pytest }:
 
 buildPythonPackage rec {
   pname = "netdisco";
-  version = "1.2.4";
+  version = "1.3.1";
 
   disabled = !isPy3k;
 
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     owner = "home-assistant";
     repo = pname;
     rev = version;
-    sha256 = "170s9py8rw07cfgwvv7mf69g8jjg32m2rgw8x3kbvjqlmrdijxmm";
+    sha256 = "082ihazpcmf7qh4671kgdr5kzglyj10gp9hyy52snh0c1rz468fd";
   };
 
   propagatedBuildInputs = [ requests zeroconf netifaces ];
@@ -24,7 +24,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Python library to scan local network for services and devices";
-    homepage = https://github.com/home-assistant/netdisco/;
+    homepage = https://github.com/home-assistant/netdisco;
     license = licenses.asl20;
     platforms = platforms.unix;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/development/python-modules/networkx/default.nix b/pkgs/development/python-modules/networkx/default.nix
index f6fc4139c858..3388aef9cef1 100644
--- a/pkgs/development/python-modules/networkx/default.nix
+++ b/pkgs/development/python-modules/networkx/default.nix
@@ -3,32 +3,24 @@
 , fetchPypi
 , nose
 , decorator
-, isPy36
-, isPyPy
 }:
 
 buildPythonPackage rec {
   pname = "networkx";
-  version = "1.11";
-
-  # Currently broken on PyPy.
-  # https://github.com/networkx/networkx/pull/1361
-  disabled = isPyPy;
+  version = "2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd";
+    extension = "zip";
+    sha256 = "64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1";
   };
 
   checkInputs = [ nose ];
   propagatedBuildInputs = [ decorator ];
 
-  # 17 failures with 3.6 https://github.com/networkx/networkx/issues/2396#issuecomment-304437299
-  doCheck = !(isPy36);
-
   meta = {
     homepage = "https://networkx.github.io/";
     description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks";
     license = lib.licenses.bsd3;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/nevow/default.nix b/pkgs/development/python-modules/nevow/default.nix
new file mode 100644
index 000000000000..ccbb59c44dc2
--- /dev/null
+++ b/pkgs/development/python-modules/nevow/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, twisted }:
+
+buildPythonPackage rec {
+  pname = "Nevow";
+  version = "0.14.3";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "0pid8dj3p8ai715n9a59cryfxrrbxidpda3f8hvgmfpcrjdmnmmb";
+  };
+
+  propagatedBuildInputs = [ twisted ];
+
+  checkPhase = ''
+    trial formless nevow
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Nevow, a web application construction kit for Python";
+    longDescription = ''
+      Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow
+      is a web application construction kit written in Python.  It is
+      designed to allow the programmer to express as much of the view
+      logic as desired in Python, and includes a pure Python XML
+      expression syntax named stan to facilitate this.  However it
+      also provides rich support for designer-edited templates, using
+      a very small XML attribute language to provide bi-directional
+      template manipulation capability.
+
+      Nevow also includes formless, a declarative syntax for
+      specifying the types of method parameters and exposing these
+      methods to the web.  Forms can be rendered automatically, and
+      form posts will be validated and input coerced, rendering error
+      pages if appropriate.  Once a form post has validated
+      successfully, the method will be called with the coerced values.
+    '';
+    homepage = https://github.com/twisted/nevow;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/nipype/default.nix b/pkgs/development/python-modules/nipype/default.nix
index a38f23d5536f..30ee2b28561a 100644
--- a/pkgs/development/python-modules/nipype/default.nix
+++ b/pkgs/development/python-modules/nipype/default.nix
@@ -29,11 +29,11 @@ assert !isPy3k -> configparser != null;
 
 buildPythonPackage rec {
   pname = "nipype";
-  version = "1.0.0";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4c14c6cae1f530f89d76fa8136d52488b1daf3a02179da65121b76eaf4a6f0ea";
+    sha256 = "47f62fda3d6b9a37aa407a6b78c80e91240aa71e61191ed00da68b02839fe258";
   };
 
   doCheck = false;  # fails with TypeError: None is not callable
diff --git a/pkgs/development/python-modules/node-semver/default.nix b/pkgs/development/python-modules/node-semver/default.nix
index 7351d2edfd3f..9e4ba35680a1 100644
--- a/pkgs/development/python-modules/node-semver/default.nix
+++ b/pkgs/development/python-modules/node-semver/default.nix
@@ -1,7 +1,6 @@
 { stdenv, fetchPypi, buildPythonPackage, pytest, tox }:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   version = "0.3.0";
   pname = "node-semver";
 
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index 97aad8c09285..e62fff7bca35 100644
--- a/pkgs/development/python-modules/numba/default.nix
+++ b/pkgs/development/python-modules/numba/default.nix
@@ -14,12 +14,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.36.2";
+  version = "0.37.0";
   pname = "numba";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d61597808ce511e81b64e32da664f52beb7d947bf834dde8b8b60b29d205e5c2";
+    sha256 = "c62121b2d384d8b4d244ef26c1cf8bb5cb819278a80b893bf41918ad6d391258";
   };
 
   NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/default.nix
index f32f417c3917..3fce29cd8cda 100644
--- a/pkgs/development/python-modules/numpy/default.nix
+++ b/pkgs/development/python-modules/numpy/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "numpy";
-  version = "1.14.0";
+  version = "1.14.1";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "3de643935b212307b420248018323a44ec51987a336d1d747c1322afc3c099fb";
+    sha256 = "fa0944650d5d3fb95869eaacd8eedbd2d83610c85e271bd9d3495ffa9bc4dc9c";
   };
 
   disabled = isPyPy;
diff --git a/pkgs/development/python-modules/odo/default.nix b/pkgs/development/python-modules/odo/default.nix
index 73b3f0be1503..f18420b676b7 100644
--- a/pkgs/development/python-modules/odo/default.nix
+++ b/pkgs/development/python-modules/odo/default.nix
@@ -1,6 +1,6 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pytest
 , datashape
 , numpy
@@ -8,23 +8,28 @@
 , toolz
 , multipledispatch
 , networkx
+, dask
 }:
 
 buildPythonPackage rec {
   pname = "odo";
-  version= "0.5.0";
-  name = "${pname}-${version}";
+  version= "0.5.1";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1mh5k69d9ph9jd07jl9yqh78rbnh5cjspi1q530v3ml7ivjzz4p8";
+
+  src = fetchFromGitHub {
+    owner = "blaze";
+    repo = pname;
+    rev = version;
+    sha256 = "142f4jvaqjn0dq6rvlk7d7mzcmc255a9z4nxc1b3a862hp4gvijs";
   };
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytest dask ];
   propagatedBuildInputs = [ datashape numpy pandas toolz multipledispatch networkx ];
 
+  # Disable failing tests
+  # https://github.com/blaze/odo/issues/609
   checkPhase = ''
-    py.test odo/tests
+    py.test -k "not test_numpy_asserts_type_after_dataframe" odo/tests
   '';
 
   meta = {
@@ -32,5 +37,8 @@ buildPythonPackage rec {
     description = "Data migration utilities";
     license = lib.licenses.bsdOriginal;
     maintainers = with lib.maintainers; [ fridh ];
+    # incomaptible with Networkx 2
+    # see https://github.com/blaze/odo/pull/601
+    broken = true;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/ofxhome/default.nix b/pkgs/development/python-modules/ofxhome/default.nix
new file mode 100644
index 000000000000..3d412e1409c8
--- /dev/null
+++ b/pkgs/development/python-modules/ofxhome/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+  name = "${pname}-${version}";
+  version = "0.3.3";
+  pname = "ofxhome";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1rpyfqr2q9pnin47rjd4qapl8ngk1m9jx36iqckhdhr8s8gla445";
+  };
+
+  buildInputs = [ nose ];
+
+  # ImportError: No module named tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/captin411/ofxhome";
+    description = "ofxhome.com financial institution lookup REST client";
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/opentimestamps/default.nix b/pkgs/development/python-modules/opentimestamps/default.nix
new file mode 100644
index 000000000000..1271a46f047d
--- /dev/null
+++ b/pkgs/development/python-modules/opentimestamps/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, bitcoinlib, GitPython, pysha3 }:
+
+buildPythonPackage rec {
+  name = "opentimestamps-${version}";
+  version = "0.2.1";
+  disabled = (!isPy3k);
+
+  src = fetchFromGitHub {
+    owner = "opentimestamps";
+    repo = "python-opentimestamps";
+    rev = "python-opentimestamps-v0.2.1";
+    sha256 = "1cilv1ls9mdqk8zriqfkz7xcl8i1ncm0f89n4c8k4s82kf5y56rm";
+  };
+
+  # Remove a failing test which expects the test source file to reside in the
+  # project's Git repo
+  patchPhase = ''
+    rm opentimestamps/tests/core/test_git.py
+  '';
+
+  propagatedBuildInputs = [ bitcoinlib GitPython pysha3 ];
+
+  meta = {
+    description = "Create and verify OpenTimestamps proofs";
+    homepage = https://github.com/opentimestamps/python-opentimestamps;
+    license = lib.licenses.lgpl3;
+  };
+}
diff --git a/pkgs/development/python-modules/oset/default.nix b/pkgs/development/python-modules/oset/default.nix
new file mode 100644
index 000000000000..aa435b403e8b
--- /dev/null
+++ b/pkgs/development/python-modules/oset/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "oset";
+  version = "0.1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "017rr1m72s2fh9bmz5vrvc5mshczgzisi5894v9zkvvfr7gdf7sc";
+  };
+
+  doCheck = false;
+
+  meta = {
+    description = "Ordered set";
+    license = stdenv.lib.licenses.psfl;
+  };
+
+}
diff --git a/pkgs/development/python-modules/paramz/default.nix b/pkgs/development/python-modules/paramz/default.nix
index 3d9fd2afacae..daca12f66c09 100644
--- a/pkgs/development/python-modules/paramz/default.nix
+++ b/pkgs/development/python-modules/paramz/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "paramz";
-  version = "0.8.5";
+  version = "0.9.1";
   name  = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "297e59b48e57e78e15f547b1af8b21ddfd19a6312d70b9dc07c7262711adfed9";
+    sha256 = "8a5a2fe5cdb033eb869c49e81fde2a9d0055fadb53a8af1665a7f48f320179cf";
   };
 
   propagatedBuildInputs = [ numpy scipy six decorator ];
diff --git a/pkgs/development/python-modules/patator/default.nix b/pkgs/development/python-modules/patator/default.nix
new file mode 100644
index 000000000000..46601c167553
--- /dev/null
+++ b/pkgs/development/python-modules/patator/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi,
+  paramiko, pycurl, ajpy, pyopenssl, cx_oracle, mysqlclient,
+  psycopg2, pycrypto, dnspython, ipy, pysnmp, pyasn1 }:
+
+
+buildPythonPackage rec {
+  pname = "patator";
+  version = "0.7";
+  disabled = !(isPy3k);
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "335e432e6cc591437e316ba8c1da935484ca39fc79e595ccf60ccd9166e965f1";
+  };
+
+  propagatedBuildInputs = [
+    paramiko
+    pycurl
+    ajpy
+    pyopenssl
+    cx_oracle
+    mysqlclient
+    psycopg2
+    pycrypto
+    dnspython
+    ipy
+    pysnmp
+    pyasn1
+  ];
+
+  # No tests provided by patator
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "multi-purpose brute-forcer";
+    homepage = "https://github.com/lanjelot/patator";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ y0no ];
+  };
+}
diff --git a/pkgs/development/python-modules/paypalrestsdk/default.nix b/pkgs/development/python-modules/paypalrestsdk/default.nix
new file mode 100644
index 000000000000..dbc918e6c0dc
--- /dev/null
+++ b/pkgs/development/python-modules/paypalrestsdk/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, fetchPypi
+, requests, six, pyopenssl }:
+
+buildPythonPackage rec {
+  pname = "paypalrestsdk";
+  version = "1.13.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "238713208031e8981bf70b3350b3d7f85ed64d34e0f21e4c1184444a546fee7f";
+  };
+
+  propagatedBuildInputs = [ requests six pyopenssl ];
+
+  meta = {
+    homepage = https://developer.paypal.com/;
+    description = "Python APIs to create, process and manage payment";
+    license = "PayPal SDK License";
+  };
+}
diff --git a/pkgs/development/python-modules/pendulum/default.nix b/pkgs/development/python-modules/pendulum/default.nix
index 12d5c82d511a..2d3ccf83a8a5 100644
--- a/pkgs/development/python-modules/pendulum/default.nix
+++ b/pkgs/development/python-modules/pendulum/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pendulum";
-  version = "1.4.1";
+  version = "1.4.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3f16fb759e6126dd89d49886f8100caa72e5ab36563bc148b4f7eddfa0099c0f";
+    sha256 = "39a255776528afe11ea0d57814f9bf3729c1e0b99063af2e5c6cfd750c3e1f7f";
   };
 
   propagatedBuildInputs = [ dateutil pytzdata tzlocal ];
diff --git a/pkgs/development/python-modules/phonenumbers/default.nix b/pkgs/development/python-modules/phonenumbers/default.nix
index 14e59ce3a955..e00aeb5d70de 100644
--- a/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/pkgs/development/python-modules/phonenumbers/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.8.9";
+  version = "8.9.0";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d819299c3aa8f85f248295ab8559e202af429b4017301b122a0b4c387aed10d2";
+    sha256 = "2cb4822ba895200b06f46a788e852d6ae8200fdc97e1d7c86b0ee10c99d4ff3a";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/pillow/default.nix b/pkgs/development/python-modules/pillow/default.nix
index 034748255277..cb6008ea9a2b 100644
--- a/pkgs/development/python-modules/pillow/default.nix
+++ b/pkgs/development/python-modules/pillow/default.nix
@@ -31,6 +31,14 @@ buildPythonPackage rec {
     ++ stdenv.lib.optionals (isPyPy) [ tk libX11 ];
 
   # NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
+  # NOTE: The Pillow install script will, by default, add paths like /usr/lib
+  # and /usr/include to the search paths. This can break things when building
+  # on a non-NixOS system that has some libraries installed that are not
+  # installed in Nix (for example, Arch Linux has jpeg2000 but Nix doesn't
+  # build Pillow with this support). We patch the `disable_platform_guessing`
+  # setting here, instead of passing the `--disable-platform-guessing`
+  # command-line option, since the command-line option doesn't work when we run
+  # tests.
   preConfigure = let
     libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
     libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
@@ -41,7 +49,8 @@ buildPythonPackage rec {
             s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
             s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
             s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
-            s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;'
+            s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
+            s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
     export LDFLAGS="-L${libwebp}/lib"
     export CFLAGS="-I${libwebp}/include"
   ''
diff --git a/pkgs/development/python-modules/plotly/default.nix b/pkgs/development/python-modules/plotly/default.nix
index a202ef8b85a5..fb5a5c93a12f 100644
--- a/pkgs/development/python-modules/plotly/default.nix
+++ b/pkgs/development/python-modules/plotly/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "plotly";
-  version = "2.4.0";
+  version = "2.4.1";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8e7ee039231fec52b0b38d45e7470f70b117f6527b08cc922d74992f4d082858";
+    sha256 = "f588991dce15437debd825eca935c8cfbabf438cdc0dcd2ce7a88f429d982f69";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/polib/default.nix b/pkgs/development/python-modules/polib/default.nix
new file mode 100644
index 000000000000..3b2ee20c8251
--- /dev/null
+++ b/pkgs/development/python-modules/polib/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "polib";
+  version = "1.0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16klwlswfbgmkzrra80fgzhic9447pk3mnr75r2fkz72bkvpcclb";
+  };
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A library to manipulate gettext files (po and mo files)";
+    homepage = https://bitbucket.org/izi/polib/;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/pomegranate/default.nix b/pkgs/development/python-modules/pomegranate/default.nix
index 77b373de259a..e611e2ea5b10 100644
--- a/pkgs/development/python-modules/pomegranate/default.nix
+++ b/pkgs/development/python-modules/pomegranate/default.nix
@@ -3,7 +3,6 @@
 buildPythonPackage rec {
   pname = "pomegranate";
   version = "0.8.1";
-  name  = "${pname}-${version}";
   
   src = fetchFromGitHub {
     repo = pname;
@@ -21,5 +20,9 @@ buildPythonPackage rec {
     homepage = https://github.com/jmschrei/pomegranate;
     license = licenses.mit;
     maintainers = with maintainers; [ rybern ];
+
+    # "pomegranate does not yet work with networkx 2.0"
+    # see https://github.com/jmschrei/pomegranate/issues/209
+    broken = true; 
   };
 }
diff --git a/pkgs/development/python-modules/proboscis/default.nix b/pkgs/development/python-modules/proboscis/default.nix
new file mode 100644
index 000000000000..f2373e4702f9
--- /dev/null
+++ b/pkgs/development/python-modules/proboscis/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+  pname = "proboscis";
+  version = "1.2.6.0";
+  name = "${pname}-${version}";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "b822b243a7c82030fce0de97bdc432345941306d2c24ef227ca561dd019cd238";
+  };
+
+  propagatedBuildInputs = [ nose ];
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A Python test framework that extends Python's built-in unittest module and Nose with features from TestNG";
+    homepage = https://pypi.python.org/pypi/proboscis;
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/progressbar/default.nix b/pkgs/development/python-modules/progressbar/default.nix
new file mode 100644
index 000000000000..18dfa693f5b5
--- /dev/null
+++ b/pkgs/development/python-modules/progressbar/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "progressbar";
+  version = "2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "dfee5201237ca0e942baa4d451fee8bf8a54065a337fabe7378b8585aeda56a3";
+  };
+
+  # invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/progressbar;
+    description = "Text progressbar library for python";
+    license = licenses.lgpl3Plus;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+}
diff --git a/pkgs/development/python-modules/prov/default.nix b/pkgs/development/python-modules/prov/default.nix
index 8866382ea8f2..f5f5b719b060 100644
--- a/pkgs/development/python-modules/prov/default.nix
+++ b/pkgs/development/python-modules/prov/default.nix
@@ -7,6 +7,8 @@
 , six
 , pydotplus
 , rdflib
+, pydot
+, glibcLocales
 }:
 
 buildPythonPackage rec {
@@ -18,6 +20,10 @@ buildPythonPackage rec {
     sha256 = "640dc158d931403bc6c1a0ad80702caae71f810bac21f90ec605865c8444b7bb";
   };
 
+  prePatch = ''
+    substituteInPlace setup.py --replace "six==1.10.0" "six>=1.10.0"
+  '';
+
   propagatedBuildInputs = [
     lxml
     networkx
@@ -26,7 +32,15 @@ buildPythonPackage rec {
     pydotplus
     rdflib
   ];
-  doCheck = false; # takes ~60 mins
+
+  checkInputs = [
+    pydot
+    glibcLocales
+  ];
+
+  preCheck = ''
+    export LC_ALL="en_US.utf-8"
+  '';
 
   meta = with stdenv.lib; {
     description = "A Python library for W3C Provenance Data Model (PROV)";
diff --git a/pkgs/development/python-modules/publicsuffix/default.nix b/pkgs/development/python-modules/publicsuffix/default.nix
new file mode 100644
index 000000000000..9c90161c6eaa
--- /dev/null
+++ b/pkgs/development/python-modules/publicsuffix/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+  pname = "publicsuffix";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf";
+  };
+
+
+  # fix the ASCII-mode LICENSE file read
+  # disable test_fetch and the doctests (which also invoke fetch)
+  patchPhase = stdenv.lib.optionalString isPy3k ''
+    sed -i "s/)\.read(/,encoding='utf-8'\0/" setup.py
+  '' + ''
+    sed -i -e "/def test_fetch/i\\
+    \\t@unittest.skip('requires internet')" -e "/def additional_tests():/,+1d" tests.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Allows to get the public suffix of a domain name";
+    homepage = "https://pypi.python.org/pypi/publicsuffix/";
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/pushbullet/default.nix b/pkgs/development/python-modules/pushbullet/default.nix
new file mode 100644
index 000000000000..74c0f66b91eb
--- /dev/null
+++ b/pkgs/development/python-modules/pushbullet/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi
+, requests, websocket_client, python_magic
+, pytest, mock }:
+
+buildPythonPackage rec {
+  pname = "pushbullet.py";
+  version = "0.11.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "aa9dc7bb46e083e3497d46241154f12944a8f540e29d150330ca94db0b453b8d";
+  };
+
+  propagatedBuildInputs = [ requests websocket_client python_magic ];
+
+  checkInputs = [ pytest mock ];
+
+  checkPhase = ''
+    PUSHBULLET_API_KEY="" py.test -k "not test_e2e and not test_auth"
+  '';
+
+  meta = with lib; {
+    description = "A simple python client for pushbullet.com";
+    homepage = https://github.com/randomchars/pushbullet.py;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/pushover/default.nix b/pkgs/development/python-modules/pushover/default.nix
new file mode 100644
index 000000000000..f5d1a9568c3e
--- /dev/null
+++ b/pkgs/development/python-modules/pushover/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests }:
+
+buildPythonPackage rec {
+  pname = "python-pushover";
+  version = "0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0xlghiqd9rsgn7jdhc8v1xh3xspssihrw1vyy85gvjzxa1ah19sk";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  # tests require network
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Bindings and command line utility for the Pushover notification service";
+    homepage = https://github.com/Thibauth/python-pushover;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/py4j/default.nix b/pkgs/development/python-modules/py4j/default.nix
new file mode 100644
index 000000000000..9cf9828635fb
--- /dev/null
+++ b/pkgs/development/python-modules/py4j/default.nix
@@ -0,0 +1,22 @@
+{ buildPythonPackage, fetchPypi, stdenv }:
+
+buildPythonPackage rec {
+  pname = "py4j";
+
+  version = "0.10.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension= "zip";
+    sha256 = "10shayghsmcdr03w12a7sdm6vsxpjm8alw3ym3mr1hki45yarryk";
+  };
+
+  propagatedBuildInputs = [  ];
+
+  meta = with stdenv.lib; {
+    description = "Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects.";
+    homepage = https://www.py4j.org/;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.shlevy ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyamf/default.nix b/pkgs/development/python-modules/pyamf/default.nix
index 59acacd50517..5ac6ef82964c 100644
--- a/pkgs/development/python-modules/pyamf/default.nix
+++ b/pkgs/development/python-modules/pyamf/default.nix
@@ -1,10 +1,12 @@
-{ stdenv, fetchPypi, buildPythonPackage, defusedxml }:
+{ stdenv, fetchPypi, buildPythonPackage, isPy3k, defusedxml }:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "PyAMF";
   version = "0.8.0";
 
+  # according to setup.py
+  disabled = isPy3k;
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "1r3lp9gkph48g9lijby5rs5daa3lhxs204r14zw4kvp3hf4xcm84";
diff --git a/pkgs/development/python-modules/pyaxmlparser/default.nix b/pkgs/development/python-modules/pyaxmlparser/default.nix
new file mode 100644
index 000000000000..be82cc7bf026
--- /dev/null
+++ b/pkgs/development/python-modules/pyaxmlparser/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, stdenv, lxml, click, fetchPypi }:
+
+buildPythonPackage rec {
+  version = "0.3.7";
+  pname = "pyaxmlparser";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1spwr28sc6fc3cqdx2j2zq38qx889hixl4ahhf1nphpmrl39ypxr";
+  };
+
+  propagatedBuildInputs = [ lxml click ];
+
+  meta = with stdenv.lib; {
+    description = "Python3 Parser for Android XML file and get Application Name without using Androguard";
+    homepage = https://github.com/appknox/pyaxmlparser;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pybfd/default.nix b/pkgs/development/python-modules/pybfd/default.nix
index 0ac437bfb293..8f074943dd32 100644
--- a/pkgs/development/python-modules/pybfd/default.nix
+++ b/pkgs/development/python-modules/pybfd/default.nix
@@ -1,7 +1,8 @@
 { lib, fetchFromGitHub, buildPythonPackage, isPyPy, isPy3k, libbfd, libopcodes }:
 
 buildPythonPackage rec {
-  name = "pybfd-0.1.1.2017-12-31";
+  pname = "pybfd";
+  version = "-0.1.1.2017-12-31";
 
   disabled = isPyPy || isPy3k;
 
diff --git a/pkgs/development/python-modules/pybtex-docutils/default.nix b/pkgs/development/python-modules/pybtex-docutils/default.nix
new file mode 100644
index 000000000000..45d907df2233
--- /dev/null
+++ b/pkgs/development/python-modules/pybtex-docutils/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, docutils, pybtex, six }:
+
+buildPythonPackage rec {
+  version = "0.2.1";
+  pname = "pybtex-docutils";
+
+  doCheck = false;
+  buildInputs = [ docutils pybtex six ];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0dqk4lplij7rbqqi4dbpw3wzr4wj08ysswvdibls6s0x3ij7bc74";
+  };
+
+  meta = {
+    description = "A docutils backend for pybtex";
+    homepage = "https://github.com/mcmtroffaes/pybtex-docutils";
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/pybtex/default.nix b/pkgs/development/python-modules/pybtex/default.nix
new file mode 100644
index 000000000000..20689255435a
--- /dev/null
+++ b/pkgs/development/python-modules/pybtex/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonPackage, fetchPypi, latexcodec, pyyaml }:
+
+buildPythonPackage rec {
+  version = "0.21";
+  pname = "pybtex";
+
+  doCheck = false;
+  propagatedBuildInputs = [ latexcodec pyyaml ];
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "00300j8dn5pxq4ndxmfmbmycg2znawkqs49val2x6jlmfiy6r2mg";
+  };
+
+  meta = {
+    homepage = "https://pybtex.org/";
+    description = "A BibTeX-compatible bibliography processor written in Python";
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/pychart/default.nix b/pkgs/development/python-modules/pychart/default.nix
new file mode 100644
index 000000000000..259c87347d72
--- /dev/null
+++ b/pkgs/development/python-modules/pychart/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy27 }:
+
+buildPythonPackage rec {
+  pname = "pychart";
+  version = "1.39";
+
+  disabled = ! isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "882650928776a7ca72e67054a9e0ac98f78645f279c0cfb5910db28f03f07c2e";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Library for creating high quality encapsulated Postscript, PDF, PNG, or SVG charts";
+    homepage = https://pypi.python.org/pypi/PyChart;
+    license = licenses.gpl2;
+  };
+}
diff --git a/pkgs/development/python-modules/pycups/default.nix b/pkgs/development/python-modules/pycups/default.nix
new file mode 100644
index 000000000000..28dff352e389
--- /dev/null
+++ b/pkgs/development/python-modules/pycups/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildPythonPackage, fetchurl, cups, libiconv }:
+
+buildPythonPackage rec {
+  pname = "pycups";
+  version = "1.9.73";
+
+  src = fetchurl {
+    url = "http://cyberelk.net/tim/data/pycups/pycups-${version}.tar.bz2";
+    sha256 = "c381be011889ca6f728598578c89c8ac9f7ab1e95b614474df9f2fa831ae5335";
+  };
+
+  buildInputs = [ cups ] ++ lib.optional stdenv.isDarwin libiconv;
+
+  # Wants to connect to CUPS
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python bindings for libcups";
+    homepage = http://cyberelk.net/tim/software/pycups/;
+    license = with licenses; [ gpl2Plus ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycurl/default.nix b/pkgs/development/python-modules/pycurl/default.nix
new file mode 100644
index 000000000000..e1d9158a4f71
--- /dev/null
+++ b/pkgs/development/python-modules/pycurl/default.nix
@@ -0,0 +1,39 @@
+{ buildPythonPackage
+, isPyPy
+, fetchPypi
+, curl
+, openssl
+, bottle
+, pytest
+, nose
+, flaky
+}:
+
+buildPythonPackage rec {
+  pname = "pycurl";
+  version = "7.43.0.1";
+  disabled = isPyPy; # https://github.com/pycurl/pycurl/issues/208
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ali1gjs9iliwjra7w0y5hwg79a2fd0f4ydvv6k27sgxpbr1n8s3";
+  };
+
+  buildInputs = [ curl openssl.out ];
+
+  checkInputs = [ bottle pytest nose flaky ];
+
+  checkPhase = ''
+    py.test -k "not test_ssl_in_static_libs and not ssh_key_cb_test" tests
+  '';
+
+  preConfigure = ''
+    substituteInPlace setup.py --replace '--static-libs' '--libs'
+    export PYCURL_SSL_LIBRARY=openssl
+  '';
+
+  meta = {
+    homepage = http://pycurl.sourceforge.net/;
+    description = "Python wrapper for libcurl";
+  };
+}
diff --git a/pkgs/development/python-modules/pydub/default.nix b/pkgs/development/python-modules/pydub/default.nix
index 819c6ffe4892..6450cb7c70eb 100644
--- a/pkgs/development/python-modules/pydub/default.nix
+++ b/pkgs/development/python-modules/pydub/default.nix
@@ -3,10 +3,10 @@
 buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "pydub";
-  version = "0.20.0";
+  version = "0.21.0";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0hqsvvph6ks4kxj0m2q1xvl5bllqmpk78rlqpqhh79schl344xkv";
+    sha256 = "27acc5977b0f5220682175d44fda737bbf818143b0832c0c3863b5dde38e197a";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/pyftgl/default.nix b/pkgs/development/python-modules/pyftgl/default.nix
index 117169a26121..a85837472255 100644
--- a/pkgs/development/python-modules/pyftgl/default.nix
+++ b/pkgs/development/python-modules/pyftgl/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchFromGitHub, isPy3k
-, boost, freetype, ftgl, mesa }:
+, boost, freetype, ftgl, libGLU_combined }:
 
 buildPythonPackage rec {
   pname = "pyftgl";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     sed -i "s,'boost_python','boost_python3',g" setup.py
   '';
 
-  buildInputs = [ boost freetype ftgl mesa ];
+  buildInputs = [ boost freetype ftgl libGLU_combined ];
 
   meta = with stdenv.lib; {
     description = "Python bindings for FTGL (FreeType for OpenGL)";
diff --git a/pkgs/development/python-modules/pyglet/default.nix b/pkgs/development/python-modules/pyglet/default.nix
index 8ac066500a4c..3fc7f8ddb683 100644
--- a/pkgs/development/python-modules/pyglet/default.nix
+++ b/pkgs/development/python-modules/pyglet/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi
-, mesa, xorg, freetype, fontconfig, future}:
+, libGLU_combined, xorg, freetype, fontconfig, future}:
 
 buildPythonPackage rec {
   version = "1.3.1";
@@ -11,7 +11,7 @@ buildPythonPackage rec {
   };
 
   postPatch = let
-    libs = [ mesa xorg.libX11 freetype fontconfig ];
+    libs = [ libGLU_combined xorg.libX11 freetype fontconfig ];
     paths = builtins.concatStringsSep "," (map (l: "\"${l}/lib\"") libs);
   in "sed -i -e 's|directories\.extend.*lib[^]]*|&,${paths}|' pyglet/lib.py";
 
diff --git a/pkgs/development/python-modules/pyhomematic/default.nix b/pkgs/development/python-modules/pyhomematic/default.nix
index 1191b09ec389..be6fb7c8bb61 100644
--- a/pkgs/development/python-modules/pyhomematic/default.nix
+++ b/pkgs/development/python-modules/pyhomematic/default.nix
@@ -14,6 +14,9 @@ buildPythonPackage rec {
     sha256 = "1g181x2mrhxcaswr6vi2m7if97wv4rf2g2pny60334sciga8njfz";
   };
 
+  # Unreliable timing: https://github.com/danielperna84/pyhomematic/issues/126
+  doCheck = false;
+
   meta = with stdenv.lib; {
     description = "Python 3 Interface to interact with Homematic devices";
     homepage = https://github.com/danielperna84/pyhomematic;
diff --git a/pkgs/development/python-modules/pyjade/default.nix b/pkgs/development/python-modules/pyjade/default.nix
new file mode 100644
index 000000000000..ad6742f5deb3
--- /dev/null
+++ b/pkgs/development/python-modules/pyjade/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, buildPythonPackage, fetchPypi, pyramid_mako, nose, django, jinja2
+, tornado, pyramid, Mako, six }:
+
+buildPythonPackage rec {
+  pname = "pyjade";
+  version = "4.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1mycn5cc9cp4fb0i2vzgkkk6d0glnkbilggwb4i99i09vr0vg5cd";
+  };
+
+  buildInputs = [ pyramid_mako nose django jinja2 tornado pyramid Mako ];
+  propagatedBuildInputs = [ six ];
+  postPatch = ''
+    sed -i 's/1.4.99/1.99/' setup.py
+  '';
+  checkPhase = ''
+    nosetests pyjade
+  '';
+  # No tests distributed. https://github.com/syrusakbary/pyjade/issues/262
+  doCheck = false;
+  meta = with stdenv.lib; {
+    description = "Jade syntax template adapter for Django, Jinja2, Mako and Tornado templates";
+    homepage    = "https://github.com/syrusakbary/pyjade";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ nand0p ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymongo/default.nix b/pkgs/development/python-modules/pymongo/default.nix
index 577cd9142f95..038b12b3a9e7 100644
--- a/pkgs/development/python-modules/pymongo/default.nix
+++ b/pkgs/development/python-modules/pymongo/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "pymongo";
-  version = "3.6.0";
+  version = "3.6.1";
   name  = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c6de26d1e171cdc449745b82f1addbc873d105b8e7335097da991c0fc664a4a8";
+    sha256 = "f7ebcb846962ee40374db2d9014a89bea9c983ae63c1877957c3a0a756974796";
   };
 
   doCheck = false;
diff --git a/pkgs/development/python-modules/pyopencl/default.nix b/pkgs/development/python-modules/pyopencl/default.nix
index a2d019374c96..d90ff4581077 100644
--- a/pkgs/development/python-modules/pyopencl/default.nix
+++ b/pkgs/development/python-modules/pyopencl/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pyopencl";
-  version = "2018.1";
+  version = "2018.1.1";
 
   checkInputs = [ pytest ];
   buildInputs = [ opencl-headers ocl-icd ];
@@ -24,7 +24,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b692966bbaaa65ef8949ee25660d6b0cc7cbadc7f4a35eb9c5139dfa4dde6d4a";
+    sha256 = "29683b47ec729c77a1be4d6fae2bd3718ca4cfcbe14655261a3a14d5bf55530a";
   };
 
   # py.test is not needed during runtime, so remove it from `install_requires`
diff --git a/pkgs/development/python-modules/pysha3/default.nix b/pkgs/development/python-modules/pysha3/default.nix
new file mode 100644
index 000000000000..4df98623e118
--- /dev/null
+++ b/pkgs/development/python-modules/pysha3/default.nix
@@ -0,0 +1,19 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder }:
+
+buildPythonPackage rec {
+  pname = "pysha3";
+  version = "1.0.2";
+  name = "${pname}-${version}";
+  disabled = pythonOlder "2.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17kkjapv6sr906ib0r5wpldmzw7scza08kv241r98vffy9rqx67y";
+  };
+
+  meta = {
+    description = "Backport of hashlib.sha3 for 2.7 to 3.5";
+    homepage = https://github.com/tiran/pysha3;
+    license = lib.licenses.psfl;
+  };
+}
diff --git a/pkgs/development/python-modules/pyslurm/default.nix b/pkgs/development/python-modules/pyslurm/default.nix
index 41b42bb63ec0..74ff0be3833a 100644
--- a/pkgs/development/python-modules/pyslurm/default.nix
+++ b/pkgs/development/python-modules/pyslurm/default.nix
@@ -2,14 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pyslurm";
-  version = "20171102";
-  name = pname + "-" + version;
+  version = "20170302";
 
   src = fetchFromGitHub {
     repo = "pyslurm";
     owner = "PySlurm";
-    rev = "a2acbc820da419e308c5817998d2abe78a7b75e6";
-    sha256 = "1wmlx5fh1xzjyksvmq7i083hmyvs7id61ysk2d9hbmf8rza498as";
+    rev = "f5a756f199da404ec73cb7fcd7f04ec4d21ea3ff";
+    sha256 = "1xn321nc8i8zmngh537j6lnng1rhdp460qx4skvh9daz5h9nxznx";
   };
 
   buildInputs = [ cython slurm ];
diff --git a/pkgs/development/python-modules/pyspark/default.nix b/pkgs/development/python-modules/pyspark/default.nix
new file mode 100644
index 000000000000..3447c64cf6b8
--- /dev/null
+++ b/pkgs/development/python-modules/pyspark/default.nix
@@ -0,0 +1,28 @@
+{ buildPythonPackage, fetchPypi, stdenv, py4j }:
+
+buildPythonPackage rec {
+  pname = "pyspark";
+  version = "2.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0vlq07yqy6c7ayg401i0qynnliqz405bmw1r8alkck0m1s8kcd8b";
+  };
+
+  # pypandoc is broken with pandoc2, so we just lose docs.
+  postPatch = ''
+    sed -i "s/'pypandoc'//" setup.py
+  '';
+
+  propagatedBuildInputs = [ py4j ];
+
+  # Tests assume running spark...
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Apache Spark";
+    homepage = https://github.com/apache/spark/tree/master/python;
+    license = licenses.asl20;
+    maintainers = [ maintainers.shlevy ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-mock/default.nix b/pkgs/development/python-modules/pytest-mock/default.nix
index 51ec2a1f4cbc..defbbdbc0c25 100644
--- a/pkgs/development/python-modules/pytest-mock/default.nix
+++ b/pkgs/development/python-modules/pytest-mock/default.nix
@@ -1,12 +1,12 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, pytest, mock, setuptools_scm }:
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, isPy3k, pytest, mock, setuptools_scm }:
 
 buildPythonPackage rec {
   pname = "pytest-mock";
-  version = "1.7.0";
+  version = "1.7.1";
  
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ed6c9ac6b7565b226b4da2da48876c9198d76401ec8d9c5e4c69b45423e33f8";
+    sha256 = "0jgr1h1f0m9dl3alxiiw55as28pj2lpihz12gird9z1i3vvdyydq";
   };
 
   propagatedBuildInputs = [ pytest ] ++ lib.optional (!isPy3k) mock;
diff --git a/pkgs/development/python-modules/pytest-xdist/default.nix b/pkgs/development/python-modules/pytest-xdist/default.nix
index 596ce38ed0ab..38d34a958545 100644
--- a/pkgs/development/python-modules/pytest-xdist/default.nix
+++ b/pkgs/development/python-modules/pytest-xdist/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pytest-xdist";
-  version = "1.22.0";
+  version = "1.22.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "65228a859191f2c74ee68c127317eefe35eedd3d43fc1431f19240663b0cafcd";
+    sha256 = "e8f5744acc270b3e7d915bdb4d5f471670f049b6fbd163d4cbd52203b075d30f";
   };
 
   nativeBuildInputs = [ setuptools_scm ];
diff --git a/pkgs/development/python-modules/pytest/default.nix b/pkgs/development/python-modules/pytest/default.nix
index 9b7f5cc12de0..7288ad0332b5 100644
--- a/pkgs/development/python-modules/pytest/default.nix
+++ b/pkgs/development/python-modules/pytest/default.nix
@@ -2,7 +2,7 @@
 , setuptools_scm, setuptools, six, pluggy, funcsigs, isPy3k
 }:
 buildPythonPackage rec {
-  version = "3.4.0";
+  version = "3.4.1";
   pname = "pytest";
 
   preCheck = ''
@@ -12,7 +12,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6074ea3b9c999bd6d0df5fa9d12dd95ccd23550df2a582f5f5b848331d2e82ca";
+    sha256 = "9ddcb879c8cc859d2540204b5399011f842e5e8823674bf429f70ada281b3cc6";
   };
 
   checkInputs = [ hypothesis ];
diff --git a/pkgs/development/python-modules/python-ctags3/default.nix b/pkgs/development/python-modules/python-ctags3/default.nix
new file mode 100644
index 000000000000..ba29154df3ad
--- /dev/null
+++ b/pkgs/development/python-modules/python-ctags3/default.nix
@@ -0,0 +1,17 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "python-ctags3";
+  version = "1.2.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "62e1d48a8cd88756767f3f5e3f1b1a81bc84deeb736f0c9480a5b5d066f63c3e";
+  };
+
+  meta = with lib; {
+    description = "Ctags indexing python bindings";
+    homepage = https://github.com/jonashaag/python-ctags3;
+    license = licenses.lgpl3Plus;
+  };
+}
diff --git a/pkgs/development/python-modules/python-daemon/default.nix b/pkgs/development/python-modules/python-daemon/default.nix
new file mode 100644
index 000000000000..c44af185a108
--- /dev/null
+++ b/pkgs/development/python-modules/python-daemon/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, mock, testscenarios, docutils, lockfile }:
+
+buildPythonPackage rec {
+  pname = "python-daemon";
+  version = "2.1.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "261c859be5c12ae7d4286dc6951e87e9e1a70a882a8b41fd926efc1ec4214f73";
+  };
+
+  # A test fail within chroot builds.
+  doCheck = false;
+
+  buildInputs = [ mock testscenarios ];
+  propagatedBuildInputs = [ docutils lockfile ];
+
+  meta = with lib; {
+    description = "Library to implement a well-behaved Unix daemon process";
+    homepage = https://alioth.debian.org/projects/python-daemon/;
+    license = [ licenses.gpl3Plus licenses.asl20 ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-oauth2/default.nix b/pkgs/development/python-modules/python-oauth2/default.nix
index 38649ca19859..f4d87dc035c1 100644
--- a/pkgs/development/python-modules/python-oauth2/default.nix
+++ b/pkgs/development/python-modules/python-oauth2/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "python-oauth2";
-  version = "1.0.1";
+  version = "1.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a1d0qnlgm07wq9r9bbm5jqkqry73w34m87p0141bk76lg7bb0sm";
+    sha256 = "b24da812837c19183df1924e80a22ba0a1869582dea8b04a9ecd807b04dbc525";
   };
   # attempts to run mysql
   doCheck = false;
diff --git a/pkgs/development/python-modules/python-ptrace/default.nix b/pkgs/development/python-modules/python-ptrace/default.nix
new file mode 100644
index 000000000000..ad0a17da2ac8
--- /dev/null
+++ b/pkgs/development/python-modules/python-ptrace/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "python-ptrace";
+  version = "0.9.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "019jlpya2d2b3vbg037hnj4z0f564r7ibygayda7bm7qbpw0sa4g";
+  };
+
+  # requires distorm, which is optionally
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python binding of ptrace library";
+    homepage = https://github.com/vstinner/python-ptrace;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ mic92 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytools/default.nix b/pkgs/development/python-modules/pytools/default.nix
index 2bf7413c6005..1fba3303e3fe 100644
--- a/pkgs/development/python-modules/pytools/default.nix
+++ b/pkgs/development/python-modules/pytools/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "pytools";
-  version = "2017.6";
+  version = "2018.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "80f1bba4469d473c1b3969bc8e188c03bcc94d35807a889ceebbfc78e3208115";
+    sha256 = "0063b87285cb1172e3602a996bfd7342bf407361cf67b562cb6d806f70422e71";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/readme_renderer/default.nix b/pkgs/development/python-modules/readme_renderer/default.nix
index af0b64fc3404..d99829194939 100644
--- a/pkgs/development/python-modules/readme_renderer/default.nix
+++ b/pkgs/development/python-modules/readme_renderer/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , pytest
+, CommonMark
 , bleach
 , docutils
 , pygments
@@ -10,18 +11,17 @@
 
 buildPythonPackage rec {
   pname = "readme_renderer";
-  version = "17.2";
-  name = "${pname}-${version}";
+  version = "17.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9deab442963a63a71ab494bf581b1c844473995a2357f4b3228a1df1c8cba8da";
+    sha256 = "82d68175feec897af2a38fe8590778f14c3be5324cc62e3ce5752a9b1e4b60ab";
   };
 
   checkInputs = [ pytest ];
 
   propagatedBuildInputs = [
-    bleach docutils pygments six
+    CommonMark bleach docutils pygments six
   ];
 
   checkPhase = ''
@@ -33,4 +33,4 @@ buildPythonPackage rec {
     homepage = https://github.com/pypa/readme_renderer;
     license = lib.licenses.asl20;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/rednose/default.nix b/pkgs/development/python-modules/rednose/default.nix
new file mode 100644
index 000000000000..d9736dcb6f39
--- /dev/null
+++ b/pkgs/development/python-modules/rednose/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, nose, six, colorama, termstyle }:
+
+buildPythonPackage rec {
+  pname = "rednose";
+  version = "1.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6da77917788be277b70259edc0bb92fc6f28fe268b765b4ea88206cc3543a3e1";
+  };
+
+  prePatch = ''
+    substituteInPlace setup.py --replace "six==1.10.0" "six>=1.10.0"
+  '';
+
+  checkInputs = [ six ];
+  propagatedBuildInputs = [ nose colorama termstyle ];
+
+  meta = with lib; {
+    description = "A python nose plugin adding color to console results";
+    homepage = https://github.com/JBKahn/rednose;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/regex/default.nix b/pkgs/development/python-modules/regex/default.nix
index 44650618f5f5..234088d1f519 100644
--- a/pkgs/development/python-modules/regex/default.nix
+++ b/pkgs/development/python-modules/regex/default.nix
@@ -1,23 +1,28 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, python
 }:
 
 
 buildPythonPackage rec {
   pname = "regex";
-  version = "2018.02.08";
+  version = "2018.02.21";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2353c0e983c4029caf32016f1dddef623c3117ac282a818468c6d2f5d541698d";
+    sha256 = "b44624a38d07d3c954c84ad302c29f7930f4bf01443beef5589e9157b14e2a29";
   };
 
+  postCheck = ''
+    echo "We now run tests ourselves, since the setuptools installer doesn't."
+    ${python.interpreter} -c 'import test_regex; test_regex.test_main();'
+  '';
+
   meta = {
     description = "Alternative regular expression module, to replace re";
     homepage = https://bitbucket.org/mrabarnett/mrab-regex;
     license = lib.licenses.psfl;
-    platforms = lib.platforms.linux;
     maintainers = with lib.maintainers; [ abbradar ];
   };
 }
diff --git a/pkgs/development/python-modules/requests-unixsocket/default.nix b/pkgs/development/python-modules/requests-unixsocket/default.nix
new file mode 100644
index 000000000000..4eb3a33926ff
--- /dev/null
+++ b/pkgs/development/python-modules/requests-unixsocket/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonPackage, fetchPypi
+, pbr, requests
+, pytest, pytestpep8, waitress }:
+
+buildPythonPackage rec {
+  pname = "requests-unixsocket";
+  version = "0.1.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0k19knydh0fzd7w12lfy18arl1ndwa0zln33vsb37yv1iw9w06x9";
+  };
+
+  nativeBuildInputs = [ pbr ];
+  propagatedBuildInputs = [ requests ];
+
+  checkInputs = [ pytest pytestpep8 waitress ];
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with lib; {
+    description = "Use requests to talk HTTP via a UNIX domain socket";
+    homepage = https://github.com/msabramo/requests-unixsocket;
+    license = licenses.asl20;
+    maintainers = [ maintainers.catern ];
+  };
+}
diff --git a/pkgs/development/python-modules/restructuredtext_lint/default.nix b/pkgs/development/python-modules/restructuredtext_lint/default.nix
index e58066cbef4d..af1f28d6d72d 100644
--- a/pkgs/development/python-modules/restructuredtext_lint/default.nix
+++ b/pkgs/development/python-modules/restructuredtext_lint/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "restructuredtext_lint";
-  version = "1.1.2";
+  version = "1.1.3";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9201d354e22c27be61cf6d8212da6e10c875eec7ec8d1bdb1067b2a5ba931637";
+    sha256 = "c48ca9a84c312b262809f041fe47dcfaedc9ee4879b3e1f9532f745c182b4037";
   };
 
   checkInputs = [ nose flake8 pyyaml testtools ];
diff --git a/pkgs/development/python-modules/robomachine/default.nix b/pkgs/development/python-modules/robomachine/default.nix
index 72407131cb15..f29cafb7aeed 100644
--- a/pkgs/development/python-modules/robomachine/default.nix
+++ b/pkgs/development/python-modules/robomachine/default.nix
@@ -1,16 +1,15 @@
-{ stdenv, fetchurl, buildPythonPackage, pyparsing, argparse, robotframework }:
+{ stdenv, fetchPypi, buildPythonPackage, pyparsing, argparse, robotframework, allpairspy }:
 
 buildPythonPackage rec {
-  pname = "robomachine";
+  pname = "RoboMachine";
   version = "0.8.0";
-  name = pname + "-" + version;
 
-  src = fetchurl {
-    url = "mirror://pypi/R/RoboMachine/RoboMachine-0.6.tar.gz";
+  src = fetchPypi {
+    inherit pname version;
     sha256 = "242cfd9be0f7591138eaeba03c9c190f894ce045e1767ab7b90eca330259fc45";
   };
 
-  propagatedBuildInputs = [ pyparsing argparse robotframework ];
+  propagatedBuildInputs = [ pyparsing argparse robotframework allpairspy ];
 
   # Remove Windows .bat files
   postInstall = ''
diff --git a/pkgs/development/python-modules/robotframework/default.nix b/pkgs/development/python-modules/robotframework/default.nix
index 6a4a88670251..22f351211191 100644
--- a/pkgs/development/python-modules/robotframework/default.nix
+++ b/pkgs/development/python-modules/robotframework/default.nix
@@ -15,7 +15,6 @@ buildPythonPackage rec {
     description = "Generic test automation framework";
     homepage = http://robotframework.org/;
     license = licenses.asl20;
-    platforms = platforms.linux;
     maintainers = with maintainers; [ bjornfor ];
   };
 }
diff --git a/pkgs/development/python-modules/scikitlearn/default.nix b/pkgs/development/python-modules/scikitlearn/default.nix
index 6d32b056a0a9..00bdcae1b9a8 100644
--- a/pkgs/development/python-modules/scikitlearn/default.nix
+++ b/pkgs/development/python-modules/scikitlearn/default.nix
@@ -21,8 +21,9 @@ buildPythonPackage rec {
   LC_ALL="en_US.UTF-8";
 
   # Disable doctests on OSX: https://github.com/scikit-learn/scikit-learn/issues/10213
+  # Disable doctests everywhere: https://github.com/NixOS/nixpkgs/issues/35436
   checkPhase = ''
-    HOME=$TMPDIR OMP_NUM_THREADS=1 nosetests ${stdenv.lib.optionalString stdenv.isDarwin "--doctest-options=+SKIP"} $out/${python.sitePackages}/sklearn/
+    HOME=$TMPDIR OMP_NUM_THREADS=1 nosetests --doctest-options=+SKIP $out/${python.sitePackages}/sklearn/
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/selenium/default.nix b/pkgs/development/python-modules/selenium/default.nix
index 6b64cd18b4fa..1661dd2cf3aa 100644
--- a/pkgs/development/python-modules/selenium/default.nix
+++ b/pkgs/development/python-modules/selenium/default.nix
@@ -7,6 +7,19 @@
 , xorg
 }:
 
+
+let
+  # Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some
+  # absolute paths. Replaced by relative path so it is found when used in nix.
+  x_ignore_nofocus =
+    fetchFromGitHub {
+      owner = "SeleniumHQ";
+      repo = "selenium";
+      rev = "selenium-3.6.0";
+      sha256 = "13wf4hx4i7nhl4s8xkziwxl0km1j873syrj4amragj6mpip2wn8v";
+    };
+in
+
 buildPythonPackage rec {
   pname = "selenium";
   version = "3.6.0";
@@ -23,21 +36,11 @@ buildPythonPackage rec {
     geckodriver
   ];
 
-  # Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some
-  # absolute paths. Replaced by relative path so it is found when used in nix.
-  x_ignore_nofocus =
-    fetchFromGitHub {
-      owner = "SeleniumHQ";
-      repo = "selenium";
-      rev = "selenium-3.6.0";
-      sha256 = "13wf4hx4i7nhl4s8xkziwxl0km1j873syrj4amragj6mpip2wn8v";
-    };
-
-  patchPhase = ''
+  patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
     cp "${x_ignore_nofocus}/cpp/linux-specific/"* .
     substituteInPlace x_ignore_nofocus.c --replace "/usr/lib/libX11.so.6" "${xorg.libX11.out}/lib/libX11.so.6"
-    gcc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o
-    gcc -shared \
+    cc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o
+    cc -shared \
       -Wl,${if stdenv.isDarwin then "-install_name" else "-soname"},x_ignore_nofocus.so \
       -o x_ignore_nofocus.so \
       x_ignore_nofocus.o
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index b8fd011c4ea6..cd07a64ae49b 100644
--- a/pkgs/development/python-modules/setuptools/default.nix
+++ b/pkgs/development/python-modules/setuptools/default.nix
@@ -8,13 +8,13 @@
 # Should use buildPythonPackage here somehow
 stdenv.mkDerivation rec {
   pname = "setuptools";
-  version = "38.4.0";
+  version = "38.4.1";
   name = "${python.libPrefix}-${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "6501fc32f505ec5b3ed36ec65ba48f1b975f52cf2ea101c7b73a08583fd12f75";
+    sha256 = "3b5f74bd33b046a121f052632f248b580f5e83848bb4cebda9e38741a445a969";
   };
 
   nativeBuildInputs = [ unzip wrapPython ];
diff --git a/pkgs/development/python-modules/shapely/default.nix b/pkgs/development/python-modules/shapely/default.nix
index 7246205619f1..6f10cfdf3ba3 100644
--- a/pkgs/development/python-modules/shapely/default.nix
+++ b/pkgs/development/python-modules/shapely/default.nix
@@ -30,10 +30,9 @@ buildPythonPackage rec {
     sed -i "s|free = load_dll('c').free|free = load_dll('c', fallbacks=['${stdenv.cc.libc}/lib/${libc}']).free|" shapely/geos.py
   '';
 
-  # tests/test_voctorized fails because the vectorized extension is not
-  # available in when running tests
+  # Disable the tests that improperly try to use the built extensions
   checkPhase = ''
-    py.test --ignore tests/test_vectorized.py
+    py.test -k 'not test_vectorized and not test_fallbacks' tests
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 6c7c3c8400c1..b94374aeda86 100644
--- a/pkgs/development/python-modules/spacy/default.nix
+++ b/pkgs/development/python-modules/spacy/default.nix
@@ -3,12 +3,11 @@
 , buildPythonPackage
 , python
 , fetchPypi
-, fetchFromGitHub
+, html5lib
 , pytest
 , cython
-, cymem
 , preshed
-, pathlib2
+, ftfy
 , numpy
 , murmurhash
 , plac
@@ -16,7 +15,6 @@
 , ujson
 , dill
 , requests
-, ftfy
 , thinc
 , pip
 , regex
@@ -24,32 +22,49 @@
 
 buildPythonPackage rec {
   pname = "spacy";
-  version = "1.8.2";
+  version = "2.0.9";
 
-  src = fetchFromGitHub {
-    owner = "explosion";
-    repo = "spaCy";
-    rev = "v${version}";
-    sha256 = "0v3bmmar31a6968y4wl0lmgnc3829l2mnwd8s959m4pqw1y1w648";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ihkhflhyz67bp73kfjqfrbcgdxi2msz5asbrh0pkk590c4vmms5";
   };
 
+  prePatch = ''
+    substituteInPlace setup.py --replace \
+      "'html5lib==1.0b8'," \
+      "'html5lib',"
+
+    substituteInPlace setup.py --replace \
+      "'regex==2017.4.5'," \
+      "'regex',"
+
+    substituteInPlace setup.py --replace \
+      "'ftfy==2017.4.5'," \
+      "'ftfy',"
+
+    substituteInPlace setup.py --replace \
+      "'pathlib'," \
+      "\"pathlib; python_version<'3.4'\","
+  '';
+
   propagatedBuildInputs = [
    cython
-   cymem
-   pathlib2
-   preshed
-   numpy
+   dill
+   html5lib
    murmurhash
+   numpy
    plac
+   preshed
+   regex
+   requests
    six
+   thinc
    ujson
-   dill
-   requests
-   regex
    ftfy
-   thinc
-   pytest
-   pip
+  ];
+
+  checkInputs = [
+    pytest
   ];
 
   doCheck = false;
diff --git a/pkgs/development/python-modules/sphinx-navtree/default.nix b/pkgs/development/python-modules/sphinx-navtree/default.nix
new file mode 100644
index 000000000000..02e5711e888f
--- /dev/null
+++ b/pkgs/development/python-modules/sphinx-navtree/default.nix
@@ -0,0 +1,18 @@
+{ lib, fetchPypi, buildPythonPackage, sphinx }:
+
+buildPythonPackage rec {
+  version = "0.3.0";
+  pname = "sphinx-navtree";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1nqcsbqwr8ihk1fv534i0naag1qw04f7ibcgl2j8csvkh8q90b4p";
+  };
+
+  propagatedBuildInputs = [ sphinx ];
+
+  meta = {
+    description = "Navigation tree customization for Sphinx";
+    homepage = "https://github.com/bintoro/sphinx-navtree";
+    license = lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/sphinx/default.nix b/pkgs/development/python-modules/sphinx/default.nix
index 2256bcc7310f..fb37279ea847 100644
--- a/pkgs/development/python-modules/sphinx/default.nix
+++ b/pkgs/development/python-modules/sphinx/default.nix
@@ -27,10 +27,10 @@
 buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "Sphinx";
-  version = "1.7.0";
+  version = "1.7.1";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "278b7923f3f4ed2a1d1359f0ae94d89ac90ddd4189e8362f4b4d3baa2afe6b4a";
+    sha256 = "da987de5fcca21a4acc7f67a86a363039e67ac3e8827161e61b91deb131c0ee8";
   };
   LC_ALL = "en_US.UTF-8";
 
diff --git a/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix b/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
new file mode 100644
index 000000000000..4911c982cd06
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, oset, pybtex, pybtex-docutils, sphinx
+}:
+
+buildPythonPackage rec {
+  version = "0.3.6";
+  pname = "sphinxcontrib-bibtex";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1mfl3k6axq6rzqwq62fj8y9gabim2zcvydjpqmjj27f8v1qw0kpc";
+  };
+
+  propagatedBuildInputs = [ oset pybtex pybtex-docutils sphinx ];
+
+  meta = {
+    description = "A Sphinx extension for BibTeX style citations";
+    homepage = "https://github.com/mcmtroffaes/sphinxcontrib-bibtex";
+    license = stdenv.lib.licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sqlalchemy/default.nix b/pkgs/development/python-modules/sqlalchemy/default.nix
index 18540cb63f8d..00ea37e3adae 100644
--- a/pkgs/development/python-modules/sqlalchemy/default.nix
+++ b/pkgs/development/python-modules/sqlalchemy/default.nix
@@ -11,11 +11,11 @@
 buildPythonPackage rec {
   pname = "SQLAlchemy";
   name = "${pname}-${version}";
-  version = "1.2.3";
+  version = "1.2.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9e9ec143e2e246f385cfb2de8daa89d2fa466279addcb7be9e102988fdf33d24";
+    sha256 = "6997507af46b10630e13b605ac278b78885fd683d038896dbee0e7ec41d809d2";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/sqlmap/default.nix b/pkgs/development/python-modules/sqlmap/default.nix
index 0fa889b88f26..5d5e6d4bfd2b 100644
--- a/pkgs/development/python-modules/sqlmap/default.nix
+++ b/pkgs/development/python-modules/sqlmap/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "sqlmap";
-  version = "1.2.2";
+  version = "1.2.3";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6256e0d5ab6d465152c8a8a21bdb97b50e155255d6bedd586ce214ed7a1fb9d7";
+    sha256 = "0db9d1dd2e9624befff25f7e1a356f32366e4f05fd7e1a1783499816416ae28e";
   };
 
   # No tests in archive
diff --git a/pkgs/development/python-modules/sseclient/default.nix b/pkgs/development/python-modules/sseclient/default.nix
new file mode 100644
index 000000000000..9ac04e18e4f6
--- /dev/null
+++ b/pkgs/development/python-modules/sseclient/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, requests, six
+, backports_unittest-mock, pluggy, pytest, pytestrunner }:
+
+buildPythonPackage rec {
+  pname = "sseclient";
+  version = "0.0.19";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7a2ea3f4c8525ae9a677bc8193df5db88e23bcaafcc34938a1ee665975703a9f";
+  };
+
+  propagatedBuildInputs = [ requests six ];
+
+  checkInputs = [ backports_unittest-mock pytest pytestrunner ];
+
+  meta = with stdenv.lib; {
+    description = "Client library for reading Server Sent Event streams";
+    homepage = https://github.com/btubbs/sseclient;
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/stripe/default.nix b/pkgs/development/python-modules/stripe/default.nix
index 7e7aa4756bbe..95da0ec9b4f8 100644
--- a/pkgs/development/python-modules/stripe/default.nix
+++ b/pkgs/development/python-modules/stripe/default.nix
@@ -1,10 +1,9 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, unittest2, mock, requests }:
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, unittest2, mock, requests, simplejson }:
 
 buildPythonPackage rec {
   pname = "stripe";
-  version = "1.77.2";
-  name = "${pname}-${version}";
+  version = "1.79.1";
 
   # Tests require network connectivity and there's no easy way to disable
   # them. ~ C.
@@ -12,14 +11,14 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3bcd55108dd2c0e853a91147ee843bc375f35767e64d0f7680e5bd82ddb7fbf1";
+    sha256 = "2ec19bf8ad588ec04b36c35f359196fa1991f9ad911b1686ac2a12651a154947";
   };
 
-  buildInputs = [ unittest2 mock ];
+  checkInputs = [ unittest2 mock ];
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [ requests ] ++ lib.optional (!isPy3k) simplejson;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Stripe Python bindings";
     homepage = https://github.com/stripe/stripe-python;
     license = licenses.mit;
diff --git a/pkgs/development/python-modules/tablib/default.nix b/pkgs/development/python-modules/tablib/default.nix
new file mode 100644
index 000000000000..9f1bf2390b6a
--- /dev/null
+++ b/pkgs/development/python-modules/tablib/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonPackage, stdenv, fetchPypi, pytest, unicodecsv, pandas
+, xlwt, openpyxl, pyyaml, xlrd, odfpy, fetchpatch
+}:
+
+buildPythonPackage rec {
+  pname = "tablib";
+  version = "0.12.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "11wxchj0qz77dn79yiq30k4b4gsm429f4bizk4lm4rb63nk51kxq";
+  };
+
+  checkInputs = [ pytest unicodecsv pandas ];
+  propagatedBuildInputs = [ xlwt openpyxl pyyaml xlrd odfpy ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/kennethreitz/tablib/commit/0e51a2d0944022af186d2dcd34c0ab3c47141ba5.patch";
+      sha256 = "0lbbl871zdn5vpgqyjkil0c2ap3b5hz19rmihhyvrx7m4mlh1aij";
+    })
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Tablib: format-agnostic tabular dataset library";
+    homepage = http://python-tablib.org;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/termstyle/default.nix b/pkgs/development/python-modules/termstyle/default.nix
new file mode 100644
index 000000000000..0a1c4e764129
--- /dev/null
+++ b/pkgs/development/python-modules/termstyle/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "termstyle";
+  version = "0.1.11";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ef74b83698ea014112040cf32b1a093c1ab3d91c4dd18ecc03ec178fd99c9f9f";
+  };
+
+  # Only manual tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Console colouring for python";
+    homepage = "https://pypi.python.org/pypi/python-termstyle/0.1.10";
+    license = licenses.bsdOriginal;
+  };
+}
diff --git a/pkgs/development/python-modules/text-unidecode/default.nix b/pkgs/development/python-modules/text-unidecode/default.nix
new file mode 100644
index 000000000000..94aebc595123
--- /dev/null
+++ b/pkgs/development/python-modules/text-unidecode/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+  pname = "text-unidecode";
+  version = "1.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5a1375bb2ba7968740508ae38d92e1f889a0832913cb1c447d5e2046061a396d";
+  };
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with lib; {
+    description = "The most basic Text::Unidecode port";
+    homepage = https://github.com/kmike/text-unidecode;
+    license = licenses.artistic1;
+  };
+}
diff --git a/pkgs/development/python-modules/textacy/default.nix b/pkgs/development/python-modules/textacy/default.nix
index 333c4825f0f9..47b8b04c4f6a 100644
--- a/pkgs/development/python-modules/textacy/default.nix
+++ b/pkgs/development/python-modules/textacy/default.nix
@@ -25,11 +25,11 @@
 buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "textacy";
-  version = "0.5.0";
+  version = "0.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6fc4603fd52c386081b063ef7aa15ca77e5e937a3064b197359659fccfdeb406";
+    sha256 = "70ebd8f6536c1536132c997988a4f27731a2db5a7ca7bab29fb33746b444959f";
   };
 
   disabled = isPy27; # 2.7 requires backports.csv
diff --git a/pkgs/development/python-modules/thinc/default.nix b/pkgs/development/python-modules/thinc/default.nix
index 15794caf58b9..2c6df953e169 100644
--- a/pkgs/development/python-modules/thinc/default.nix
+++ b/pkgs/development/python-modules/thinc/default.nix
@@ -1,15 +1,19 @@
 { stdenv
+, lib
 , pkgs
 , buildPythonPackage
 , fetchPypi
-, fetchFromGitHub
+, pythonOlder
 , pytest
 , cython
 , cymem
+, msgpack-numpy
+, msgpack-python
 , preshed
 , numpy
 , python
 , murmurhash
+, pathlib
 , hypothesis
 , tqdm
 , cytoolz
@@ -21,36 +25,21 @@
 , dill
 }:
 
-let
-  enableDebugging = true;
-
-  pathlibLocked = buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "pathlib";
-    version = "1.0.1";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39";
-    };
-
-    doCheck = false; # fails to import support from test
-  };
-in buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "thinc";
-  version = "6.5.1";
+  version = "6.10.2";
   name = pname + "-" + version;
 
-  src = fetchFromGitHub {
-    owner = "explosion";
-    repo = "thinc";
-    rev = "v${version}";
-    sha256 = "008kmjsvanh6qgnpvsn3qacfcyprxirxbw4yfd8flyg7mxw793ws";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0xia81wvfrhyriywab184s49g8rpl42vcf5fy3x6xxw50a2yn7cs";
   };
 
   propagatedBuildInputs = [
    cython
    cymem
+   msgpack-numpy
+   msgpack-python
    preshed
    numpy
    murmurhash
@@ -64,22 +53,34 @@ in buildPythonPackage rec {
    termcolor
    wrapt
    dill
-   pathlibLocked
+  ] ++ lib.optional (pythonOlder "3.4") pathlib;
+
+
+  checkInputs = [
+    pytest
   ];
 
+  prePatch = ''
+    substituteInPlace setup.py --replace \
+      "'pathlib>=1.0.0,<2.0.0'," \
+      "\"pathlib>=1.0.0,<2.0.0; python_version<'3.4'\","
+
+    substituteInPlace setup.py --replace \
+      "'cytoolz>=0.8,<0.9'," \
+      "'cytoolz>=0.8',"
+  '';
+
+  # Cannot find cython modules.
   doCheck = false;
 
-  # fails to import some modules
-  # checkPhase = ''
-  #   ${python.interpreter} -m pytest thinc/tests
-  #   # cd thinc/tests
-  #   # ${python.interpreter} -m unittest discover -p "*test*"
-  # '';
+  checkPhase = ''
+    pytest thinc/tests
+  '';
 
   meta = with stdenv.lib; {
     description = "Practical Machine Learning for NLP in Python";
     homepage = https://github.com/explosion/thinc;
     license = licenses.mit;
-    maintainers = with maintainers; [ sdll ];
+    maintainers = with maintainers; [ aborsu sdll ];
     };
 }
diff --git a/pkgs/development/python-modules/thumbor/default.nix b/pkgs/development/python-modules/thumbor/default.nix
new file mode 100644
index 000000000000..94261b10e3d0
--- /dev/null
+++ b/pkgs/development/python-modules/thumbor/default.nix
@@ -0,0 +1,56 @@
+{ buildPythonPackage, stdenv, tornado, pycrypto, pycurl, pytz
+, pillow, derpconf, python_magic, pexif, libthumbor, opencv, webcolors
+, piexif, futures, statsd, thumborPexif, fetchPypi, fetchpatch, isPy3k, lib
+}:
+
+buildPythonPackage rec {
+  pname = "thumbor";
+  version = "6.4.2";
+
+  disabled = isPy3k; # see https://github.com/thumbor/thumbor/issues/1004
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0y9mf78j80vjh4y0xvgnybc1wqfcwm5s19xhsfgkn12hh8pmh14d";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/thumbor/thumbor/commit/4f2bc99451409e404f7fa0f3e4a3bdaea7b49869.patch";
+      sha256 = "0qqw1n1pfd8f8cn168718gzwf4b35j2j9ajyw643xpf92s0iq2cc";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace "setup.py" \
+      --replace '"argparse",' "" ${lib.optionalString isPy3k ''--replace '"futures",' ""''}
+  '';
+
+  propagatedBuildInputs = [
+    tornado
+    pycrypto
+    pycurl
+    pytz
+    pillow
+    derpconf
+    python_magic
+    pexif
+    libthumbor
+    opencv
+    webcolors
+    piexif
+    statsd
+  ] ++ lib.optionals (!isPy3k) [ futures thumborPexif ];
+
+  # disabled due to too many impure tests and issues with native modules in
+  # the pure testing environment. See https://github.com/NixOS/nixpkgs/pull/37147
+  # for further reference.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A smart imaging service";
+    homepage = https://github.com/thumbor/thumbor/wiki;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/pkgs/development/python-modules/tifffile/default.nix b/pkgs/development/python-modules/tifffile/default.nix
index 12edef190dcc..6e1baf2f2e95 100644
--- a/pkgs/development/python-modules/tifffile/default.nix
+++ b/pkgs/development/python-modules/tifffile/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "tifffile";
-  version = "0.13.5";
+  version = "0.14.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bca0fc9eaf609a27ebd99d8466e05d5a6e79389957f17582b70643dbca65e3d8";
+    sha256 = "eff44f71782dce38c604921a1b29ddad0d007ac9871d66e9c872fd6fc311334e";
   };
 
   checkInputs = [ nose ];
diff --git a/pkgs/development/python-modules/tmdb3/default.nix b/pkgs/development/python-modules/tmdb3/default.nix
new file mode 100644
index 000000000000..87b62cd78ac1
--- /dev/null
+++ b/pkgs/development/python-modules/tmdb3/default.nix
@@ -0,0 +1,20 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "tmdb3";
+  version = "0.7.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9b6e043b8a65d159e7fc8f720badc7ffee5109296e38676c107454e03a895983";
+  };
+
+  # no tests implemented
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python implementation of the v3 API for TheMovieDB.org, allowing access to movie and cast information";
+    homepage = https://pypi.python.org/pypi/tmdb3;
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/development/python-modules/tqdm/default.nix b/pkgs/development/python-modules/tqdm/default.nix
index 209ee8ccd6bb..44943cdababd 100644
--- a/pkgs/development/python-modules/tqdm/default.nix
+++ b/pkgs/development/python-modules/tqdm/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "tqdm";
-  version = "4.19.5";
+  version = "4.19.6";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "df32e6f127dc0ccbc675eadb33f749abbcb8f174c5cb9ec49c0cdb73aa737377";
+    sha256 = "5ec0d4442358e55cdb4a0471d04c6c831518fd8837f259db5537d90feab380df";
   };
 
   buildInputs = [ nose coverage glibcLocales flake8 ];
diff --git a/pkgs/development/python-modules/tunigo/default.nix b/pkgs/development/python-modules/tunigo/default.nix
new file mode 100644
index 000000000000..767bb21f0fd4
--- /dev/null
+++ b/pkgs/development/python-modules/tunigo/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchFromGitHub, requests, mock, responses, pytest }:
+
+buildPythonPackage rec {
+  pname = "tunigo";
+  version = "1.0.0";
+
+  propagatedBuildInputs = [ requests ];
+
+  src = fetchFromGitHub {
+    owner = "trygveaa";
+    repo = "python-tunigo";
+    rev = "v${version}";
+    sha256 = "07q9girrjjffzkn8xj4l3ynf9m4psi809zf6f81f54jdb330p2fs";
+  };
+
+  checkInputs = [ mock responses pytest ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with lib; {
+    description = "Python API for the browse feature of Spotify";
+    homepage = https://github.com/trygveaa/python-tunigo;
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/txtorcon/default.nix b/pkgs/development/python-modules/txtorcon/default.nix
index cd2d6c9a3656..09004e9337a0 100644
--- a/pkgs/development/python-modules/txtorcon/default.nix
+++ b/pkgs/development/python-modules/txtorcon/default.nix
@@ -3,9 +3,8 @@
 , GeoIP}:
 
 buildPythonPackage rec {
-  name = "${pname}-${version}";
   pname = "txtorcon";
-  version = "0.19.3";
+  version = "0.20.0";
 
   checkInputs = [ pytest mock lsof GeoIP ];
   propagatedBuildInputs = [
@@ -16,16 +15,9 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1za4qag4g2lbw695v4ssxqc2aspdyknnbn2diylwg8q9g5k9cczp";
+    sha256 = "dc80cb76b3ddacef6d671c0a088cb1a45274c0858554c32ce55d0f41421c740e";
   };
 
-  # ipaddress isn't required for Python 3 although it's in requirements.txt.
-  # Because ipaddress doesn't install on Python 3, remove the requirement so the
-  # installation of this package doesn't fail on Python 3.
-  postPatch = "" + lib.optionalString isPy3k ''
-    substituteInPlace requirements.txt --replace "ipaddress>=1.0.16" ""
-  '';
-
   # Skip a failing test until fixed upstream:
   # https://github.com/meejah/txtorcon/issues/250
   checkPhase = ''
diff --git a/pkgs/development/python-modules/virtual-display/default.nix b/pkgs/development/python-modules/virtual-display/default.nix
new file mode 100644
index 000000000000..262d2a5d33a0
--- /dev/null
+++ b/pkgs/development/python-modules/virtual-display/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, EasyProcess }:
+
+buildPythonPackage rec {
+  pname = "PyVirtualDisplay";
+  version = "0.2.1";
+
+  propagatedBuildInputs = [ EasyProcess ];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "012883851a992f9c53f0dc6a512765a95cf241bdb734af79e6bdfef95c6e9982";
+  };
+
+  # requires X server
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python wrapper for Xvfb, Xephyr and Xvnc";
+    homepage = "https://github.com/ponty/pyvirtualdisplay";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ layus ];
+  };
+}
diff --git a/pkgs/development/python-modules/wrapt/default.nix b/pkgs/development/python-modules/wrapt/default.nix
new file mode 100644
index 000000000000..badecc776d75
--- /dev/null
+++ b/pkgs/development/python-modules/wrapt/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "wrapt";
+  version = "1.10.11";
+
+  # No tests in archive
+  doCheck = false;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6";
+  };
+
+  meta = {
+    description = "Module for decorators, wrappers and monkey patching";
+    license = lib.licenses.bsd2;
+    homepage = https://github.com/GrahamDumpleton/wrapt;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/wsproto/default.nix b/pkgs/development/python-modules/wsproto/default.nix
new file mode 100644
index 000000000000..e98fcf205fd5
--- /dev/null
+++ b/pkgs/development/python-modules/wsproto/default.nix
@@ -0,0 +1,14 @@
+{ lib, buildPythonPackage, fetchPypi, h11, enum34 }:
+
+buildPythonPackage rec {
+  pname = "wsproto";
+  version = "0.11.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "092qk4pbyaxx8b81hv9p7pc3ww54bwfqybhya4madka3pgv19wh2";
+  };
+
+  propagatedBuildInputs = [ h11 enum34 ];
+
+}
diff --git a/pkgs/development/python-modules/xarray/default.nix b/pkgs/development/python-modules/xarray/default.nix
index afde3f3b45b0..0cf38e80d2d0 100644
--- a/pkgs/development/python-modules/xarray/default.nix
+++ b/pkgs/development/python-modules/xarray/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "xarray";
-  version = "0.10.0";
+  version = "0.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "af1449e8df84a6eb09eb1d56c1dc5ac7f24a9563d4f2b9391ff364dc0c62344c";
+    sha256 = "cc183c2d7b1788cdaeb895102b1b6c2b6a3544182ff714e92f404c29db93cc9d";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/xdot/default.nix b/pkgs/development/python-modules/xdot/default.nix
new file mode 100644
index 000000000000..526376a41632
--- /dev/null
+++ b/pkgs/development/python-modules/xdot/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi
+, wrapGAppsHook, gobjectIntrospection, pygobject3, graphviz, gnome3 }:
+
+buildPythonPackage rec {
+  pname = "xdot";
+  version = "0.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01v9vmgdxz1q2m2vq2b4aqx4ycw7grc0l4is673ygvyg9rk02dx3";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  propagatedBuildInputs = [ gobjectIntrospection pygobject3 graphviz gnome3.gtk ];
+
+  meta = with lib; {
+    description = "xdot.py is an interactive viewer for graphs written in Graphviz's dot";
+    homepage = https://github.com/jrfonseca/xdot.py;
+    license = licenses.lgpl3Plus;
+  };
+}
diff --git a/pkgs/development/python-modules/xgboost/default.nix b/pkgs/development/python-modules/xgboost/default.nix
new file mode 100644
index 000000000000..217c823afe57
--- /dev/null
+++ b/pkgs/development/python-modules/xgboost/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, lib
+, pkgs
+, buildPythonPackage
+, nose
+, scipy
+, xgboost
+}:
+
+buildPythonPackage rec {
+  name = "xgboost-${version}";
+
+  inherit (xgboost) version src meta;
+
+  propagatedBuildInputs = [ scipy ];
+  checkInputs = [ nose ];
+
+  postPatch = let
+    libname = if stdenv.isDarwin then "libxgboost.dylib" else "libxgboost.so";
+
+  in ''
+    cd python-package
+
+    sed "s/CURRENT_DIR = os.path.dirname(__file__)/CURRENT_DIR = os.path.abspath(os.path.dirname(__file__))/g" -i setup.py
+    sed "/^LIB_PATH.*/a LIB_PATH = [os.path.relpath(LIB_PATH[0], CURRENT_DIR)]" -i setup.py
+    cat <<EOF >xgboost/libpath.py
+    def find_lib_path():
+      return ["${xgboost}/lib/${libname}"]
+    EOF
+  '';
+
+  postInstall = ''
+    rm -rf $out/xgboost
+  '';
+}
diff --git a/pkgs/development/python-modules/yahooweather/default.nix b/pkgs/development/python-modules/yahooweather/default.nix
new file mode 100644
index 000000000000..38c060aa8e84
--- /dev/null
+++ b/pkgs/development/python-modules/yahooweather/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
+
+buildPythonPackage rec {
+  pname = "yahooweather";
+  version = "0.10";
+
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0bsxmngkpzvqm50i2cnxjzhpbdhb8s10ly8h5q08696cjihqdkpa";
+  };
+
+  # Tests require network access
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Provide an interface to the Yahoo! Weather RSS feed";
+    homepage = https://github.com/pvizeli/yahooweather;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index 5502a8236dae..f3dbf70eecfc 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.19.1";
+  version = "0.20.0";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ykzg730n915qbrq9bn5pn06bv6rb5zawal4sqjyfnjjm66snkj3";
+    sha256 = "6e3f1e7b5871e3d1410ac29b9fb85aafc1e2d661ed596b07a6f84559a475efcb";
   };
 
   propagatedBuildInputs = [ netifaces six enum-compat ];