summary refs log tree commit diff
path: root/pkgs/development/python-modules
diff options
context:
space:
mode:
authorAlex Brandt <alunduil@alunduil.com>2018-03-29 10:43:36 -0500
committerAlex Brandt <alunduil@alunduil.com>2018-03-29 10:43:36 -0500
commit6d78bde7adcc15a805a8681b195a52c8991fbba6 (patch)
treee7f51984ddb0e0fa6d9df52cd352d81679a3d535 /pkgs/development/python-modules
parent0f5e8a360d3d90c57bbab7aec18862bf32903e72 (diff)
parente01d485ce41f45dfc060ad1a6ec48c115fbdc1b6 (diff)
downloadnixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.tar
nixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.tar.gz
nixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.tar.bz2
nixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.tar.lz
nixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.tar.xz
nixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.tar.zst
nixpkgs-6d78bde7adcc15a805a8681b195a52c8991fbba6.zip
Merge branch 'master' into bump-behave-version
Diffstat (limited to 'pkgs/development/python-modules')
-rw-r--r--pkgs/development/python-modules/GeoIP/default.nix2
-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/WSME/default.nix49
-rw-r--r--pkgs/development/python-modules/absl-py/default.nix5
-rw-r--r--pkgs/development/python-modules/acme/default.nix20
-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.nix66
-rw-r--r--pkgs/development/python-modules/altair/default.nix11
-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/astropy/default.nix7
-rw-r--r--pkgs/development/python-modules/asynctest/default.nix4
-rw-r--r--pkgs/development/python-modules/autobahn/default.nix2
-rw-r--r--pkgs/development/python-modules/bibtexparser/default.nix21
-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/celery/default.nix7
-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/cytoolz/default.nix2
-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/deform/default.nix41
-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-pipeline/default.nix36
-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/face_recognition/default.nix33
-rw-r--r--pkgs/development/python-modules/face_recognition_models/default.nix21
-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-assets/default.nix2
-rw-r--r--pkgs/development/python-modules/flask-script/default.nix13
-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_api_core/default.nix4
-rw-r--r--pkgs/development/python-modules/google_cloud_core/default.nix4
-rw-r--r--pkgs/development/python-modules/google_cloud_speech/default.nix9
-rw-r--r--pkgs/development/python-modules/google_gax/default.nix5
-rw-r--r--pkgs/development/python-modules/googleapis_common_protos/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/graph-tool/2.x.x.nix2
-rw-r--r--pkgs/development/python-modules/green/default.nix21
-rw-r--r--pkgs/development/python-modules/grpcio/default.nix4
-rw-r--r--pkgs/development/python-modules/guessit/2.0.nix4
-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/idna/default.nix2
-rw-r--r--pkgs/development/python-modules/ipykernel/default.nix4
-rw-r--r--pkgs/development/python-modules/josepy/default.nix35
-rw-r--r--pkgs/development/python-modules/jsonref/default.nix2
-rw-r--r--pkgs/development/python-modules/jsonrpc-async/default.nix2
-rw-r--r--pkgs/development/python-modules/kafka-python/default.nix4
-rw-r--r--pkgs/development/python-modules/klein/default.nix27
-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/locustio/default.nix2
-rw-r--r--pkgs/development/python-modules/logilab/constraint.nix2
-rw-r--r--pkgs/development/python-modules/logster/default.nix21
-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/meliae/default.nix2
-rw-r--r--pkgs/development/python-modules/miniupnpc/default.nix18
-rw-r--r--pkgs/development/python-modules/moinmoin/default.nix13
-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/nbxmpp/default.nix23
-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/notebook/default.nix17
-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/pecan/default.nix2
-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.nix45
-rw-r--r--pkgs/development/python-modules/pydub/default.nix4
-rw-r--r--pkgs/development/python-modules/pygame_sdl2/default.nix30
-rw-r--r--pkgs/development/python-modules/pygtail/default.nix25
-rw-r--r--pkgs/development/python-modules/pyhomematic/default.nix7
-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/pyqt/5.x.nix13
-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.nix2
-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/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/scapy/default.nix22
-rw-r--r--pkgs/development/python-modules/scapy/fix-version-1.patch4
-rw-r--r--pkgs/development/python-modules/scapy/fix-version-2.patch20
-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/service_identity/default.nix4
-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/slimit/default.nix36
-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/stem/default.nix30
-rw-r--r--pkgs/development/python-modules/stripe/default.nix15
-rw-r--r--pkgs/development/python-modules/svg-path/default.nix17
-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/toml/default.nix23
-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/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
-rw-r--r--pkgs/development/python-modules/zope_copy/default.nix13
228 files changed, 2962 insertions, 591 deletions
diff --git a/pkgs/development/python-modules/GeoIP/default.nix b/pkgs/development/python-modules/GeoIP/default.nix
index 6c4453774ce..0bacd8edb31 100644
--- a/pkgs/development/python-modules/GeoIP/default.nix
+++ b/pkgs/development/python-modules/GeoIP/default.nix
@@ -23,7 +23,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "MaxMind GeoIP Legacy Database - Python API";
-    homepage = http://www.maxmind.com/;
+    homepage = https://www.maxmind.com/;
     maintainers = with lib.maintainers; [ jluttine ];
     license = lib.licenses.lgpl21Plus;
   };
diff --git a/pkgs/development/python-modules/IPy/default.nix b/pkgs/development/python-modules/IPy/default.nix
new file mode 100644
index 00000000000..eacfe8dda5b
--- /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 b5d202af50a..63eb93a207c 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/WSME/default.nix b/pkgs/development/python-modules/WSME/default.nix
new file mode 100644
index 00000000000..8cbbd2c767f
--- /dev/null
+++ b/pkgs/development/python-modules/WSME/default.nix
@@ -0,0 +1,49 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k
+, pbr, six, simplegeneric, netaddr, pytz, webob
+, cornice, nose, webtest, pecan, transaction, cherrypy, sphinx
+, flask, flask-restful, suds-jurko, glibcLocales }:
+
+buildPythonPackage rec {
+  pname = "WSME";
+  version = "0.9.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "e790ac755a7e36eaa796d3966d3878677896dbc7d1c2685cb85c06b744c21976";
+  };
+
+  postPatch = ''
+    # remove turbogears tests as we don't have it packaged
+    rm tests/test_tg*
+    # WSME seems incompatible with recent SQLAlchemy version
+    rm wsmeext/tests/test_sqlalchemy*
+    # https://bugs.launchpad.net/wsme/+bug/1510823
+    ${if isPy3k then "rm tests/test_cornice.py" else ""}
+  '';
+
+  checkPhae = ''
+    nosetests --exclude test_buildhtml \
+              --exlcude test_custom_clientside_error \
+              --exclude test_custom_non_http_clientside_error
+  '';
+
+  # UnicodeEncodeError, ImportError, ...
+  doCheck = !isPy3k;
+
+  nativeBuildInputs = [ pbr ];
+
+  propagatedBuildInputs = [
+    six simplegeneric netaddr pytz webob
+  ];
+
+  checkInputs = [
+    cornice nose webtest pecan transaction cherrypy sphinx
+    flask flask-restful suds-jurko glibcLocales
+  ];
+
+  meta = with lib; {
+    description = "Simplify the writing of REST APIs, and extend them with additional protocols";
+    homepage = http://git.openstack.org/cgit/openstack/wsme;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/absl-py/default.nix b/pkgs/development/python-modules/absl-py/default.nix
index 5e295bb9516..5acbf12aafc 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/acme/default.nix b/pkgs/development/python-modules/acme/default.nix
index 71357e5bef2..ccf56c208f2 100644
--- a/pkgs/development/python-modules/acme/default.nix
+++ b/pkgs/development/python-modules/acme/default.nix
@@ -1,6 +1,18 @@
 { stdenv, buildPythonPackage, fetchPypi
-, certbot, nose, cryptography, pyasn1, pyopenssl, pyRFC3339
-, pytz, requests, six, werkzeug, mock, ndg-httpsclient }:
+, certbot
+, nose
+, cryptography
+, pyasn1
+, pyopenssl
+, pyRFC3339
+, josepy
+, pytz
+, requests
+, six
+, werkzeug
+, mock
+, ndg-httpsclient
+}:
 
 buildPythonPackage rec {
   inherit (certbot) src version;
@@ -10,10 +22,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     cryptography pyasn1 pyopenssl pyRFC3339 pytz requests six werkzeug mock
-    ndg-httpsclient
+    ndg-httpsclient josepy
   ];
 
-  buildInputs = [ nose ];
+  checkInputs = [ nose ];
 
   postUnpack = "sourceRoot=\${sourceRoot}/acme";
 }
diff --git a/pkgs/development/python-modules/affinity/default.nix b/pkgs/development/python-modules/affinity/default.nix
index f2cb2ef6445..4eaaf56b441 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 00000000000..7b3bd6bbcc5
--- /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 9da239b524a..3065bb17c05 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 19ad64e7472..67bf5a11593 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 00000000000..9d1905fe914
--- /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 00000000000..e21b43c60e0
--- /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 00000000000..7abc56c4783
--- /dev/null
+++ b/pkgs/development/python-modules/alot/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, notmuch, urwid, urwidtrees, twisted, python_magic, configobj, mock, file, gpgme
+, service-identity
+, gnupg ? null, sphinx, awk ? null, procps ? null, future ? null
+, withManpage ? false }:
+
+
+buildPythonPackage rec {
+  pname = "alot";
+  version = "0.7";
+  outputs = [ "out" ] ++ lib.optional withManpage "man";
+
+  disabled = isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "pazz";
+    repo = "alot";
+    rev = "${version}";
+    sha256 = "1y932smng7qx7ybmqw4qh75b0lv9imfs5ak9fd0qhysij8kpmdhi";
+  };
+
+  postPatch = ''
+    substituteInPlace alot/defaults/alot.rc.spec \
+      --replace "themes_dir = string(default=None)" \
+                "themes_dir = string(default='$out/share/themes')"
+  '';
+
+  nativeBuildInputs = lib.optional withManpage sphinx;
+
+  propagatedBuildInputs = [
+    notmuch
+    urwid
+    urwidtrees
+    twisted
+    python_magic
+    configobj
+    service-identity
+    file
+    gpgme
+  ];
+
+  # some twisted tests need the network (test_env_set... )
+  doCheck = false;
+  postBuild = lib.optionalString withManpage "make -C docs man";
+
+  checkInputs =  [ awk future mock gnupg procps ];
+
+  postInstall = lib.optionalString withManpage ''
+    mkdir -p $out/man
+    cp -r docs/build/man $out/man
+  ''
+  + ''
+    mkdir -p $out/share/applications
+    cp -r extra/themes $out/share
+
+    sed "s,/usr/bin,$out/bin,g" extra/alot.desktop > $out/share/applications/alot.desktop
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/pazz/alot;
+    description = "Terminal MUA using notmuch mail";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ garbas ];
+  };
+}
diff --git a/pkgs/development/python-modules/altair/default.nix b/pkgs/development/python-modules/altair/default.nix
index d3cdc0f43f2..d98eba693d2 100644
--- a/pkgs/development/python-modules/altair/default.nix
+++ b/pkgs/development/python-modules/altair/default.nix
@@ -1,17 +1,20 @@
 { stdenv, buildPythonPackage, fetchPypi
-, pytest, vega, pandas, ipython, traitlets }:
+, pytest, glibcLocales, vega, pandas, ipython, traitlets }:
 
 buildPythonPackage rec {
   pname = "altair";
   version = "1.2.1";
-  name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "c1303f77f1ba4d632f2958c83c0f457b2b969860b1ac9adfb872aefa1780baa7";
   };
 
-  buildInputs = [ pytest ];
+  postPatch = ''
+    sed -i "s/vega==/vega>=/g" setup.py
+  '';
+
+  checkInputs = [ pytest glibcLocales ];
 
   checkPhase = ''
     export LANG=en_US.UTF-8
@@ -19,8 +22,6 @@ buildPythonPackage rec {
   '';
 
   propagatedBuildInputs = [ vega pandas ipython traitlets ];
-  # Disabling checks, MockRequest object has no method send()
-  doCheck = false;
 
   meta = with stdenv.lib; {
     description = "A declarative statistical visualization library for Python.";
diff --git a/pkgs/development/python-modules/aniso8601/default.nix b/pkgs/development/python-modules/aniso8601/default.nix
index ba60922856e..04df5d2fde8 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 00000000000..84f2859d50c
--- /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 00000000000..ba32cf7ea69
--- /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 3e7e970da6c..c16fb3c4c46 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 91664f76ad1..62b176fb59c 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 bdb12203de6..00000000000
--- 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 d4c9388f1a7..00000000000
--- 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 223f53698e9..a556cd3c87f 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 c6a3ac47aa7..488c5ed6651 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/astropy/default.nix b/pkgs/development/python-modules/astropy/default.nix
index ccf988fc56d..4ff4841cf5f 100644
--- a/pkgs/development/python-modules/astropy/default.nix
+++ b/pkgs/development/python-modules/astropy/default.nix
@@ -1,16 +1,18 @@
 { lib
 , fetchPypi
 , buildPythonPackage
+, isPy3k
 , numpy
 , pytest }:
 
 buildPythonPackage rec {
-  
   pname = "astropy";
   version = "3.0";
 
-  name = "${pname}-${version}";
+  disabled = !isPy3k; # according to setup.py
+
   doCheck = false; #Some tests are failing. More importantly setup.py hangs on completion. Needs fixing with a proper shellhook.
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "9e0ad19b9d6d227bdf0932bbe64a8c5dd4a47d4ec078586cf24bf9f0c61d9ecf";
@@ -18,7 +20,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ pytest numpy ]; # yes it really has pytest in install_requires
 
-
   meta = {
     description = "Astronomy/Astrophysics library for Python";
     homepage = http://www.astropy.org;
diff --git a/pkgs/development/python-modules/asynctest/default.nix b/pkgs/development/python-modules/asynctest/default.nix
index 2b0348a8758..a0f408764a0 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/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix
index 5a6121aaf7f..69ee2b1b15f 100644
--- a/pkgs/development/python-modules/autobahn/default.nix
+++ b/pkgs/development/python-modules/autobahn/default.nix
@@ -27,7 +27,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "WebSocket and WAMP in Python for Twisted and asyncio.";
-    homepage    = "http://crossbar.io/autobahn";
+    homepage    = "https://crossbar.io/autobahn";
     license     = licenses.mit;
     maintainers = with maintainers; [ nand0p ];
     platforms   = platforms.all;
diff --git a/pkgs/development/python-modules/bibtexparser/default.nix b/pkgs/development/python-modules/bibtexparser/default.nix
index 521ae1b2fee..05ee0ea9553 100644
--- a/pkgs/development/python-modules/bibtexparser/default.nix
+++ b/pkgs/development/python-modules/bibtexparser/default.nix
@@ -1,23 +1,28 @@
 { lib
-, buildPythonPackage
-, fetchPypi
+, buildPythonPackage, fetchFromGitHub
 , future, pyparsing
+, glibcLocales, nose
 }:
 
 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";
   };
 
   propagatedBuildInputs = [ future pyparsing ];
 
-  # No tests in archive
-  doCheck = false;
+  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 00000000000..2f0b01a5c23
--- /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 74e327fd342..b3c56a618e8 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 e4ccb0c92d6..786564b92e0 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 00000000000..96f7bfebdeb
--- /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 37c3ea5d72a..86e45e17ed5 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 eaab0031205..ccada6dd140 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 e363136615e..5276fdb9329 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 c4cde583f05..5c21757421b 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 6ab5015a1e7..5daa505429e 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 edfe965fa80..6daa735cfae 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 fbb53828d2a..395122b4da9 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/celery/default.nix b/pkgs/development/python-modules/celery/default.nix
index 44613dd4e5b..7f3fb46d1e1 100644
--- a/pkgs/development/python-modules/celery/default.nix
+++ b/pkgs/development/python-modules/celery/default.nix
@@ -1,6 +1,7 @@
 { stdenv, buildPythonPackage, fetchPypi, iana-etc, libredirect,
   pytest, case, kombu, billiard, pytz, anyjson, amqp, eventlet
-}: 
+}:
+
 buildPythonPackage rec {
   pname = "celery";
   version = "4.1.0";
@@ -11,11 +12,11 @@ buildPythonPackage rec {
   };
 
   # make /etc/protocols accessible to fix socket.getprotobyname('tcp') in sandbox
-  preCheck = ''
+  preCheck = stdenv.lib.optionalString stdenv.isLinux ''
     export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols \
       LD_PRELOAD=${libredirect}/lib/libredirect.so
   '';
-  postCheck = ''
+  postCheck = stdenv.lib.optionalString stdenv.isLinux ''
     unset NIX_REDIRECTS LD_PRELOAD
   '';
 
diff --git a/pkgs/development/python-modules/cffi/default.nix b/pkgs/development/python-modules/cffi/default.nix
index 5e186a8f2f8..cd643806c3a 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 b7a58f11a15..31cd0236a59 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 93620098446..6b2063f4992 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 00000000000..ed27464d1fe
--- /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 00000000000..d6cd69f6c8a
--- /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 78aa0aab5c0..afba2e17bf6 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 c0fc5b177e0..232a4a19fd8 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 6a9e1240b86..8be1780aa99 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 bfabf4376e7..badf33f8c12 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 e020eafc04c..bfb296470cf 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 8d6052c5299..d29ad1d6474 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 00000000000..e63c4107e09
--- /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/cytoolz/default.nix b/pkgs/development/python-modules/cytoolz/default.nix
index 9c5a2b2110c..f7022d91626 100644
--- a/pkgs/development/python-modules/cytoolz/default.nix
+++ b/pkgs/development/python-modules/cytoolz/default.nix
@@ -35,7 +35,7 @@ buildPythonPackage rec {
   '';
 
   meta = {
-    homepage = "http://github.com/pytoolz/cytoolz/";
+    homepage = "https://github.com/pytoolz/cytoolz/";
     description = "Cython implementation of Toolz: High performance functional utilities";
     license = "licenses.bsd3";
     maintainers = with lib.maintainers; [ fridh ];
diff --git a/pkgs/development/python-modules/daphne/default.nix b/pkgs/development/python-modules/daphne/default.nix
index 86b00ca7408..7ead1cacfa6 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 8a8437767d8..70b4b55f5c6 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 9177e9f0ff4..4fcb38e7b36 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 2343ea2918b..ac8087be63e 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/deform/default.nix b/pkgs/development/python-modules/deform/default.nix
new file mode 100644
index 00000000000..53286b38722
--- /dev/null
+++ b/pkgs/development/python-modules/deform/default.nix
@@ -0,0 +1,41 @@
+{ lib, buildPythonPackage, fetchPypi
+, chameleon, colander, iso8601, peppercorn, translationstring, zope_deprecation
+, nose, coverage, beautifulsoup4, flaky }:
+
+buildPythonPackage rec {
+  pname = "deform";
+  version = "2.0.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "874d3346a02c500432efdcc73b1a7174aa0ea69cd52a99bb9a812967f54f6f79";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "iso8601<=0.1.11" iso8601
+  '';
+
+  propagatedBuildInputs = [
+    chameleon
+    colander
+    iso8601
+    peppercorn
+    translationstring
+    zope_deprecation
+  ];
+
+  checkInputs = [
+    nose
+    coverage
+    beautifulsoup4
+    flaky
+  ];
+
+  meta = with lib; {
+    description = "Form library with advanced features like nested forms";
+    homepage = https://docs.pylonsproject.org/projects/deform/en/latest/;
+    license = licenses.free; # http://www.repoze.org/LICENSE.txt
+    maintainers = with maintainers; [ garbas domenkozar ];
+  };
+}
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 00000000000..838cc846387
--- /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 b8286e7d6b1..57f0a1ef238 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 d237f366fdf..f3d403d9f2c 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 36264921f64..da6984c9be9 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 00000000000..f334b7efeac
--- /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-pipeline/default.nix b/pkgs/development/python-modules/django-pipeline/default.nix
new file mode 100644
index 00000000000..58e9d746b97
--- /dev/null
+++ b/pkgs/development/python-modules/django-pipeline/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy3k
+, django, futures, mock, jinja2, jsmin, slimit }:
+
+buildPythonPackage rec {
+  pname = "django-pipeline";
+  version = "1.6.14";
+
+  # no tests on PyPI
+  src = fetchFromGitHub {
+    owner = "jazzband";
+    repo = pname;
+    rev = version;
+    sha256 = "1xf732bd17mgha75jfhlnms46ib2pffhpfa0ca7bmng9jhbvsl9j";
+  };
+
+  postPatch = ''
+    substituteInPlace tests/tests/test_compiler.py \
+      --replace "/usr/bin/env" ""
+  '';
+
+  propagatedBuildInputs = [ django ] ++ lib.optional (!isPy3k) futures;
+
+  checkInputs = [ jinja2 jsmin slimit ] ++ lib.optional (!isPy3k) mock;
+
+  checkPhase = ''
+    export PYTHONPATH=.:$PYTHONPATH
+    export DJANGO_SETTINGS_MODULE=tests.settings
+    ${django}/bin/django-admin.py test tests
+  '';
+
+  meta = with lib; {
+    description = "Pipeline is an asset packaging library for Django";
+    homepage = https://github.com/cyberdelia/django-pipeline;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/django-polymorphic/default.nix b/pkgs/development/python-modules/django-polymorphic/default.nix
index 8cb68ed1e7d..2cd112d8150 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 c1f935e51c6..907d2ba6e00 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 84830e7f2b8..277a5cece56 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/face_recognition/default.nix b/pkgs/development/python-modules/face_recognition/default.nix
new file mode 100644
index 00000000000..3b9a2c15b6e
--- /dev/null
+++ b/pkgs/development/python-modules/face_recognition/default.nix
@@ -0,0 +1,33 @@
+{ buildPythonPackage, fetchFromGitHub, pillow, click, dlib, numpy
+, face_recognition_models, scipy, stdenv, flake8, tox, pytest, glibcLocales
+}:
+
+buildPythonPackage rec {
+  pname = "face_recognition";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "ageitgey";
+    rev = "fe421d4acd76e8a19098e942b7bd9c3bbef6ebc4"; # no tags available in Git, pure revs are pushed to pypi
+    sha256 = "0wv5qxkg7xv1cr43zhhbixaqgj08xw2l7yvwl8g3fb2kdxyndw1c";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py --replace "flake8==2.6.0" "flake8"
+  '';
+
+  propagatedBuildInputs = [ pillow click dlib numpy face_recognition_models scipy ];
+
+  checkInputs = [ flake8 tox pytest glibcLocales ];
+  checkPhase = ''
+    LC_ALL="en_US.UTF-8" py.test
+  '';
+
+  meta = with stdenv.lib; {
+    license = licenses.mit;
+    homepage = https://github.com/ageitgey/face_recognition;
+    maintainers = with maintainers; [ ma27 ];
+    description = "The world's simplest facial recognition api for Python and the command line";
+  };
+}
diff --git a/pkgs/development/python-modules/face_recognition_models/default.nix b/pkgs/development/python-modules/face_recognition_models/default.nix
new file mode 100644
index 00000000000..960bffb903d
--- /dev/null
+++ b/pkgs/development/python-modules/face_recognition_models/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage, stdenv, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "face_recognition_models";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1kwnv3qpy5bhspk780bkyg8jd9n5f6p91ja6sjlwk1wcm00d56xp";
+  };
+
+  # no module named `tests` as no tests are available
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/ageitgey/face_recognition_models;
+    license = licenses.cc0;
+    maintainers = with maintainers; [ ma27 ];
+    description = "Trained models for the face_recognition python library";
+  };
+}
diff --git a/pkgs/development/python-modules/faker/default.nix b/pkgs/development/python-modules/faker/default.nix
index 2d459d625d0..55750f5bf3b 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 9d69c0389b6..32e9a08b741 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-assets/default.nix b/pkgs/development/python-modules/flask-assets/default.nix
index 53307333048..27d8f9c40c6 100644
--- a/pkgs/development/python-modules/flask-assets/default.nix
+++ b/pkgs/development/python-modules/flask-assets/default.nix
@@ -12,7 +12,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ flask webassets flask_script nose ];
 
   meta = with lib; {
-    homepage = http://github.com/miracle2k/flask-assets;
+    homepage = https://github.com/miracle2k/flask-assets;
     description = "Asset management for Flask, to compress and merge CSS and Javascript files";
     license = licenses.bsd2;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/development/python-modules/flask-script/default.nix b/pkgs/development/python-modules/flask-script/default.nix
index ace3cee2d22..72a3fb0c6f8 100644
--- a/pkgs/development/python-modules/flask-script/default.nix
+++ b/pkgs/development/python-modules/flask-script/default.nix
@@ -1,19 +1,22 @@
-{ 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;
+    homepage = https://github.com/smurfix/flask-script;
     description = "Scripting support for Flask";
     license = licenses.bsd3;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/development/python-modules/fonttools/default.nix b/pkgs/development/python-modules/fonttools/default.nix
index a8a89f0e8ca..fdfa4e530cf 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.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "01640dfbc0ba752181b21fe74240b8a7bbf7af75581737245836ada5565bd549";
+    sha256 = "d13e98c9f3b635a5334dab69eb471d7286928ac82db7ca57b5bf4cdf3824789a";
     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 d88c894009c..ca1c9a09e4e 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 00000000000..d3d338a2c8d
--- /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_api_core/default.nix b/pkgs/development/python-modules/google_api_core/default.nix
index 2899eeb4a8a..df148b1ede3 100644
--- a/pkgs/development/python-modules/google_api_core/default.nix
+++ b/pkgs/development/python-modules/google_api_core/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi
-, google_auth, protobuf, googleapis_common_protos, requests, grpcio, setuptools, mock, pytest }:
+, google_auth, protobuf3_5, googleapis_common_protos, requests, grpcio, setuptools, mock, pytest }:
 
 buildPythonPackage rec {
   pname = "google-api-core";
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     sha256 = "0144d467083ed54d2e8ccb4212d42c3724fe0b844b7d3a0ff85aea54b7ae8347";
   };
 
-  propagatedBuildInputs = [ google_auth protobuf googleapis_common_protos requests grpcio ];
+  propagatedBuildInputs = [ google_auth protobuf3_5 googleapis_common_protos requests grpcio ];
   checkInputs = [ setuptools mock pytest ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/google_cloud_core/default.nix b/pkgs/development/python-modules/google_cloud_core/default.nix
index c0ccef3c959..d9111ac8915 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 c24e0d88067..75c14ff62eb 100644
--- a/pkgs/development/python-modules/google_cloud_speech/default.nix
+++ b/pkgs/development/python-modules/google_cloud_speech/default.nix
@@ -3,19 +3,18 @@
 
 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 ];
   checkInputs = [ pytest mock ];
 
-  checkPhase = ''
-    py.test
-  '';
+  # needs credentials
+  doCheck = false;
 
   meta = with stdenv.lib; {
     description = "Cloud Speech API enables integration of Google speech recognition into applications.";
diff --git a/pkgs/development/python-modules/google_gax/default.nix b/pkgs/development/python-modules/google_gax/default.nix
index 24000161338..a8ac37e7e8c 100644
--- a/pkgs/development/python-modules/google_gax/default.nix
+++ b/pkgs/development/python-modules/google_gax/default.nix
@@ -1,5 +1,6 @@
 { stdenv, buildPythonPackage, fetchPypi
-, google_auth, ply, protobuf, grpcio, requests, googleapis_common_protos,  dill,  future,  pytest,  mock,  unittest2 }:
+, google_auth, ply, protobuf3_5, grpcio, requests
+, googleapis_common_protos, dill, future, pytest, mock, unittest2 }:
 
 buildPythonPackage rec {
   pname = "google-gax";
@@ -10,7 +11,7 @@ buildPythonPackage rec {
     sha256 = "0p1ribd2xy7a04wnjv12agkcdi6f9cpj838884hayx07p5g8v3ji";
   };
 
-  propagatedBuildInputs = [ google_auth ply protobuf grpcio requests googleapis_common_protos dill future ];
+  propagatedBuildInputs = [ google_auth ply protobuf3_5 grpcio requests googleapis_common_protos dill future ];
   checkInputs = [ pytest mock unittest2 ];
 
   # Importing test__grpc_google_auth fails with "ModuleNotFoundError: No module named 'google_auth_httplib2'", where
diff --git a/pkgs/development/python-modules/googleapis_common_protos/default.nix b/pkgs/development/python-modules/googleapis_common_protos/default.nix
index 28e84f4846e..7427e590c0c 100644
--- a/pkgs/development/python-modules/googleapis_common_protos/default.nix
+++ b/pkgs/development/python-modules/googleapis_common_protos/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi
-, protobuf, pytest }:
+, protobuf3_5, pytest }:
 
 buildPythonPackage rec {
   pname = "googleapis-common-protos";
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     sha256 = "1whfjl44gy15ha6palpwa2m0xi36dsvpaz8vw0cvb2k2lbdfsxf0";
   };
 
-  propagatedBuildInputs = [ protobuf ];
+  propagatedBuildInputs = [ protobuf3_5 ];
   checkInputs = [ pytest ];
 
   doCheck = false;  # there are no tests
diff --git a/pkgs/development/python-modules/gpapi/default.nix b/pkgs/development/python-modules/gpapi/default.nix
new file mode 100644
index 00000000000..da3bbcf28db
--- /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 00000000000..01827fc87f5
--- /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 bb39746d296..72415879b41 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/graph-tool/2.x.x.nix b/pkgs/development/python-modules/graph-tool/2.x.x.nix
index 99fe4b73cb9..8c61a6b278a 100644
--- a/pkgs/development/python-modules/graph-tool/2.x.x.nix
+++ b/pkgs/development/python-modules/graph-tool/2.x.x.nix
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Python module for manipulation and statistical analysis of graphs";
-    homepage    = http://graph-tool.skewed.de/;
+    homepage    = https://graph-tool.skewed.de/;
     license     = licenses.gpl3;
     platforms   = platforms.all;
     maintainers = [ stdenv.lib.maintainers.joelmo ];
diff --git a/pkgs/development/python-modules/green/default.nix b/pkgs/development/python-modules/green/default.nix
new file mode 100644
index 00000000000..81d2a7e204c
--- /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/grpcio/default.nix b/pkgs/development/python-modules/grpcio/default.nix
index d1f0903238c..47e9d179eea 100644
--- a/pkgs/development/python-modules/grpcio/default.nix
+++ b/pkgs/development/python-modules/grpcio/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi, lib
-, six, protobuf, enum34, futures, isPy26, isPy27, isPy34 }:
+, six, protobuf3_5, enum34, futures, isPy26, isPy27, isPy34 }:
 
 buildPythonPackage rec {
   pname = "grpcio";
@@ -10,7 +10,7 @@ buildPythonPackage rec {
     sha256 = "e7c43b5619deff48cc177c1b0618c4beeb2797f910f160e3c2035d5baf790a5d";
   };
 
-  propagatedBuildInputs = [ six protobuf ]
+  propagatedBuildInputs = [ six protobuf3_5 ]
                         ++ lib.optionals (isPy26 || isPy27 || isPy34) [ enum34 ]
                         ++ lib.optionals (isPy26 || isPy27) [ futures ];
 
diff --git a/pkgs/development/python-modules/guessit/2.0.nix b/pkgs/development/python-modules/guessit/2.0.nix
index 59fb650c883..c8f30746310 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/ha-ffmpeg/default.nix b/pkgs/development/python-modules/ha-ffmpeg/default.nix
new file mode 100644
index 00000000000..4259b7ad053
--- /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 379aa1c3cf4..ade4111c5a3 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 00000000000..5e839e4ada9
--- /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 00000000000..8bc54e9226c
--- /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 9886f705d54..53a245c45dc 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 177e68f6295..b324705a152 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/idna/default.nix b/pkgs/development/python-modules/idna/default.nix
index 635f8b33d3c..e66700d87ee 100644
--- a/pkgs/development/python-modules/idna/default.nix
+++ b/pkgs/development/python-modules/idna/default.nix
@@ -13,7 +13,7 @@ buildPythonPackage rec {
   };
 
   meta = {
-    homepage = "http://github.com/kjd/idna/";
+    homepage = "https://github.com/kjd/idna/";
     description = "Internationalized Domain Names in Applications (IDNA)";
     license = lib.licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/ipykernel/default.nix b/pkgs/development/python-modules/ipykernel/default.nix
index 018a522a591..3f09975d66b 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/josepy/default.nix b/pkgs/development/python-modules/josepy/default.nix
new file mode 100644
index 00000000000..541455642ef
--- /dev/null
+++ b/pkgs/development/python-modules/josepy/default.nix
@@ -0,0 +1,35 @@
+{ lib, fetchPypi, buildPythonPackage
+# buildInputs
+, six
+, setuptools
+, pyopenssl
+, cryptography
+}:
+
+buildPythonPackage rec {
+  pname = "josepy";
+  version = "1.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1k0ahzzaq2rrjiifwbhbp7vm8z4zk0ipgiqwicil80kzlf6bhj4z";
+  };
+
+  propagatedBuildInputs = [
+    pyopenssl
+    cryptography
+    six
+    setuptools
+  ];
+
+  # too many unpackaged check requirements
+  doCheck = false;
+
+  meta = with lib; {
+    description = "JOSE protocol implementation in Python";
+    homepage = https://github.com/jezdez/josepy;
+    license = licenses.asl20;
+    maintainers = with maintainers; [  ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/jsonref/default.nix b/pkgs/development/python-modules/jsonref/default.nix
index ca9549b677b..6209c2593a7 100644
--- a/pkgs/development/python-modules/jsonref/default.nix
+++ b/pkgs/development/python-modules/jsonref/default.nix
@@ -19,7 +19,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "An implementation of JSON Reference for Python";
-    homepage    = "http://github.com/gazpachoking/jsonref";
+    homepage    = "https://github.com/gazpachoking/jsonref";
     license     = licenses.mit;
     maintainers = with maintainers; [ nand0p ];
     platforms   = platforms.all;
diff --git a/pkgs/development/python-modules/jsonrpc-async/default.nix b/pkgs/development/python-modules/jsonrpc-async/default.nix
index 1018c536ff7..2bdb93dfdf2 100644
--- a/pkgs/development/python-modules/jsonrpc-async/default.nix
+++ b/pkgs/development/python-modules/jsonrpc-async/default.nix
@@ -14,7 +14,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "A JSON-RPC client library for asyncio";
-    homepage = http://github.com/armills/jsonrpc-async;
+    homepage = https://github.com/armills/jsonrpc-async;
     license = licenses.bsd3;
     maintainers = with maintainers; [ peterhoeg ];
   };
diff --git a/pkgs/development/python-modules/kafka-python/default.nix b/pkgs/development/python-modules/kafka-python/default.nix
index f5392202d4d..f88a021d53d 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/klein/default.nix b/pkgs/development/python-modules/klein/default.nix
new file mode 100644
index 00000000000..3dfbb4e17db
--- /dev/null
+++ b/pkgs/development/python-modules/klein/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi
+, six, twisted, werkzeug, incremental
+, mock }:
+
+buildPythonPackage rec {
+  pname = "klein";
+  version = "17.10.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "30aaf0d78a987d5dbfe0968a07367ad0c73e02823cc8eef4c54f80ab848370d0";
+  };
+
+  propagatedBuildInputs = [ six twisted werkzeug incremental ];
+
+  checkInputs = [ mock ];
+
+  checkPhase = ''
+    trial klein
+  '';
+
+  meta = with lib; {
+    description = "Klein Web Micro-Framework";
+    homepage    = "https://github.com/twisted/klein";
+    license     = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/konfig/default.nix b/pkgs/development/python-modules/konfig/default.nix
new file mode 100644
index 00000000000..e7062bad5ee
--- /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 00000000000..3b639ee2afb
--- /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 00000000000..58ca72a3dc9
--- /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 5dc33d2d93e..d120c38b02c 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 d702d8f95b0..b420e7149d7 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/locustio/default.nix b/pkgs/development/python-modules/locustio/default.nix
index 4bc48810e71..c3e27c8b36a 100644
--- a/pkgs/development/python-modules/locustio/default.nix
+++ b/pkgs/development/python-modules/locustio/default.nix
@@ -26,7 +26,7 @@ buildPythonPackage rec {
   buildInputs = [ mock unittest2 ];
 
   meta = {
-    homepage = http://locust.io/;
+    homepage = https://locust.io/;
     description = "A load testing tool";
   };
 }
diff --git a/pkgs/development/python-modules/logilab/constraint.nix b/pkgs/development/python-modules/logilab/constraint.nix
index 952cc03e454..8f7229a4c0f 100644
--- a/pkgs/development/python-modules/logilab/constraint.nix
+++ b/pkgs/development/python-modules/logilab/constraint.nix
@@ -17,7 +17,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "logilab-database provides some classes to make unified access to different";
-    homepage = "http://www.logilab.org/project/logilab-database";
+    homepage = "https://www.logilab.org/project/logilab-database";
   };
 }
 
diff --git a/pkgs/development/python-modules/logster/default.nix b/pkgs/development/python-modules/logster/default.nix
new file mode 100644
index 00000000000..e4b57e4ce40
--- /dev/null
+++ b/pkgs/development/python-modules/logster/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pygtail }:
+
+buildPythonPackage rec {
+  pname = "logster";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "etsy";
+    repo = pname;
+    rev = version;
+    sha256 = "06ac5hydas24h2cn8l5i69v1z0min5hwh6a1lcm1b08xnvpsi85q";
+  };
+
+  propagatedBuildInputs = [ pygtail ];
+
+  meta = with lib; {
+    description = "Parses log files, generates metrics for Graphite and Ganglia";
+    license = licenses.gpl3Plus;
+    homepage = https://github.com/etsy/logster;
+  };
+}
diff --git a/pkgs/development/python-modules/marionette-harness/mozdevice.nix b/pkgs/development/python-modules/marionette-harness/mozdevice.nix
index 00329aa1d3f..af26c8d071d 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 5960848ff63..dfe91309ea4 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 b6bea84aa23..80b13d94a2d 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 5e939d4f333..a783c125af3 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 b0c3f6d8bcf..368ab51845c 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 62605a1d21d..729f110858c 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 00000000000..1117ba958fa
--- /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/meliae/default.nix b/pkgs/development/python-modules/meliae/default.nix
index ec6c15b2501..5a348e5288c 100644
--- a/pkgs/development/python-modules/meliae/default.nix
+++ b/pkgs/development/python-modules/meliae/default.nix
@@ -35,7 +35,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Python Memory Usage Analyzer";
-    homepage = http://launchpad.net/meliae;
+    homepage = https://launchpad.net/meliae;
     license = licenses.gpl3;
     maintainers = with maintainers; [ xvapx ];
   };
diff --git a/pkgs/development/python-modules/miniupnpc/default.nix b/pkgs/development/python-modules/miniupnpc/default.nix
new file mode 100644
index 00000000000..d267cb6a976
--- /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 cedd45f2f22..2097470d4e4 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";
   };
 
@@ -25,7 +28,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Advanced, easy to use and extensible WikiEngine";
 
-    homepage = "http://moinmo.in/";
+    homepage = "https://moinmo.in/";
 
     license = licenses.gpl2Plus;
   };
diff --git a/pkgs/development/python-modules/mozterm/default.nix b/pkgs/development/python-modules/mozterm/default.nix
new file mode 100644
index 00000000000..6adba7ef2b9
--- /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 00000000000..0244b03c484
--- /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 2400a76bd6e..3068a31f1e2 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 00000000000..5e2ad1d5aa2
--- /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 00000000000..1617e6dd394
--- /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 023c94cdc8e..f689bc2ff49 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 00000000000..0be0f892d73
--- /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/nbxmpp/default.nix b/pkgs/development/python-modules/nbxmpp/default.nix
index 295354003ba..b6f94536e2f 100644
--- a/pkgs/development/python-modules/nbxmpp/default.nix
+++ b/pkgs/development/python-modules/nbxmpp/default.nix
@@ -1,17 +1,30 @@
-{ stdenv, buildPythonPackage, fetchPypi }:
+{ stdenv, buildPythonPackage, fetchzip, pyopenssl }:
 
 buildPythonPackage rec {
   pname = "nbxmpp";
-  version = "0.6.3";
+  version = "0.6.4";
+  name = "${pname}-${version}";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "dd66e701a4856e3cace8f4865837ccc9bcfcdb286df01f01aa19531f5d834a83";
+  # Tests aren't included in PyPI tarball.
+  src = fetchzip {
+    name = "${name}.tar.bz2";
+    url = "https://dev.gajim.org/gajim/python-nbxmpp/repository/archive.tar.bz2?"
+        + "ref=${name}";
+    sha256 = "0mikgksf01w82wnnm0phmzkijk2c93g24fzd59s71n3zy7f7dx3l";
   };
 
+  propagatedBuildInputs = [ pyopenssl ];
+
+  checkPhase = ''
+    # Disable tests requiring networking
+    echo "" > test/unit/test_xmpp_transports_nb2.py
+    python test/runtests.py
+  '';
+
   meta = with stdenv.lib; {
     homepage = "https://dev.gajim.org/gajim/python-nbxmpp";
     description = "Non-blocking Jabber/XMPP module";
     license = licenses.gpl3;
+    maintainers = with maintainers; [ abbradar ];
   };
 }
diff --git a/pkgs/development/python-modules/neovim/default.nix b/pkgs/development/python-modules/neovim/default.nix
index 6fcd82aca9e..646a8e7bb11 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.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16vzxmp7f6dl20n30j5cwwvrjj5h3c2ch8ldbss31anf36nirsdp";
+    sha256 = "0accfgyvihs08bwapgakx6w93p4vbrq2448n2z6gw88m2hja9jm3";
   };
 
   checkInputs = [ nose ];
diff --git a/pkgs/development/python-modules/netdisco/default.nix b/pkgs/development/python-modules/netdisco/default.nix
index 96de3ee2836..b9b50d98ebf 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 f6fc4139c85..3388aef9cef 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 00000000000..ccbb59c44dc
--- /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 a38f23d5536..30ee2b28561 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 7351d2edfd3..9e4ba35680a 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/notebook/default.nix b/pkgs/development/python-modules/notebook/default.nix
index be5a798b6c6..37c5774bba2 100644
--- a/pkgs/development/python-modules/notebook/default.nix
+++ b/pkgs/development/python-modules/notebook/default.nix
@@ -1,4 +1,5 @@
-{ lib
+{ stdenv
+, lib
 , buildPythonPackage
 , fetchPypi
 , nose
@@ -23,16 +24,16 @@
 
 buildPythonPackage rec {
   pname = "notebook";
-  version = "5.4.0";
+  version = "5.4.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "dd431fad9bdd25aa9ff8265da096ef770475e21bf1d327982611a7de5cd904ca";
+    sha256 = "01l6yp78sp27vns4cxh8ybr7x0pixxn97cp0i3w6s0lv1v8l6qbx";
   };
 
   LC_ALL = "en_US.utf8";
 
-  buildInputs = [ nose glibcLocales ]
+  checkInputs = [ nose glibcLocales ]
     ++ (if isPy3k then [ nose_warnings_filters ] else [ mock ]);
 
   propagatedBuildInputs = [
@@ -43,12 +44,16 @@ buildPythonPackage rec {
   # disable warning_filters
   preCheck = lib.optionalString (!isPy3k) ''
     echo "" > setup.cfg
-    cat setup.cfg
   '';
+
   checkPhase = ''
     runHook preCheck
     mkdir tmp
-    HOME=tmp nosetests -v
+    HOME=tmp nosetests -v ${if (stdenv.isDarwin) then ''
+      --exclude test_delete \
+      --exclude test_checkpoints_follow_file
+    ''
+    else ""}
   '';
 
   meta = {
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index 97aad8c0928..e62fff7bca3 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 f32f417c391..3fce29cd8cd 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 73b3f0be150..f18420b676b 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 00000000000..3d412e1409c
--- /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 00000000000..1271a46f047
--- /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 00000000000..aa435b403e8
--- /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 3d9fd2afaca..daca12f66c0 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 00000000000..46601c16755
--- /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 00000000000..dbc918e6c0d
--- /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/pecan/default.nix b/pkgs/development/python-modules/pecan/default.nix
index 3a49a32a8a0..c6c5b99d980 100644
--- a/pkgs/development/python-modules/pecan/default.nix
+++ b/pkgs/development/python-modules/pecan/default.nix
@@ -30,6 +30,6 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Pecan";
-    homepage = "http://github.com/pecan/pecan";
+    homepage = "https://github.com/pecan/pecan";
   };
 }
diff --git a/pkgs/development/python-modules/pendulum/default.nix b/pkgs/development/python-modules/pendulum/default.nix
index 12d5c82d511..2d3ccf83a8a 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 14e59ce3a95..e00aeb5d70d 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 03474825527..cb6008ea9a2 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 a202ef8b85a..fb5a5c93a12 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 00000000000..3b2ee20c825
--- /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 77b373de259..e611e2ea5b1 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 00000000000..f2373e4702f
--- /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 00000000000..18dfa693f5b
--- /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 8866382ea8f..f5f5b719b06 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 00000000000..9c90161c6ea
--- /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 00000000000..74c0f66b91e
--- /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 00000000000..f5d1a9568c3
--- /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 00000000000..9cf9828635f
--- /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 59acacd5051..5ac6ef82964 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 00000000000..be82cc7bf02
--- /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 0ac437bfb29..8f074943dd3 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 00000000000..45d907df223
--- /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 00000000000..20689255435
--- /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 00000000000..259c87347d7
--- /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 00000000000..28dff352e38
--- /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 00000000000..27a9790dce0
--- /dev/null
+++ b/pkgs/development/python-modules/pycurl/default.nix
@@ -0,0 +1,45 @@
+{ 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 ssh_key_cb_test \
+                and not test_libcurl_ssl_gnutls \
+                and not test_libcurl_ssl_nss \
+                and not test_libcurl_ssl_openssl \
+                and not test_libcurl_ssl_unrecognized \
+                and not test_request_with_verifypeer \
+                and not test_ssl_in_static_libs" 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 819c6ffe489..6450cb7c70e 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/pygame_sdl2/default.nix b/pkgs/development/python-modules/pygame_sdl2/default.nix
index eab56f9f7ac..08c266da696 100644
--- a/pkgs/development/python-modules/pygame_sdl2/default.nix
+++ b/pkgs/development/python-modules/pygame_sdl2/default.nix
@@ -1,18 +1,30 @@
-{ stdenv, pkgs, buildPythonPackage, fetchFromGitHub, isPy27
+{ stdenv, pkgs, buildPythonPackage, fetchurl, isPy27, fetchpatch
 , cython, SDL2, SDL2_image, SDL2_ttf, SDL2_mixer, libjpeg, libpng }:
 
 buildPythonPackage rec {
   pname = "pygame_sdl2";
-  version = "6.99.10.1227";
-  name = "${pname}-${version}";
-
-  src = fetchFromGitHub {
-    owner = "renpy";
-    repo = "${pname}";
-    rev = "renpy-${version}";
-    sha256 = "10n6janvqh5adn7pcijqwqfh234sybjz788kb8ac6b4l11hy2lx1";
+  version = "2.1.0";
+  renpy_version = "6.99.14";
+  name = "${pname}-${version}-${renpy_version}";
+
+  src = fetchurl {
+    url = "https://www.renpy.org/dl/${renpy_version}/pygame_sdl2-${version}-for-renpy-${renpy_version}.tar.gz";
+    sha256 = "1zsnb2bivbwysgxmfg9iv12arhpf3gqkmqinhciz955hlqv016b9";
   };
 
+  # force rebuild of headers needed for install
+  prePatch = ''
+    rm -rf gen gen3
+  '';
+
+  patches = [
+    # fix for recent sdl2
+    (fetchpatch {
+      url = "https://github.com/apoleon/pygame_sdl2/commit/ced6051f4a4559a725804cc58c079e1efea0a573.patch";
+      sha256 = "08rqjzvdlmmdf8kyd8ws5lzjy1mrwnds4fdy38inkyw7saydcxyr";
+    })
+  ];
+
   buildInputs = [
     SDL2 SDL2_image SDL2_ttf SDL2_mixer
     cython libjpeg libpng
diff --git a/pkgs/development/python-modules/pygtail/default.nix b/pkgs/development/python-modules/pygtail/default.nix
new file mode 100644
index 00000000000..503dad717c2
--- /dev/null
+++ b/pkgs/development/python-modules/pygtail/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub }:
+
+buildPythonPackage rec {
+  pname = "pygtail";
+  version = "0.8.0";
+
+  src = fetchFromGitHub {
+    owner = "bgreenlee";
+    repo = pname;
+    rev = version;
+    sha256 = "1f8qlijiwn10jxg1bsi6q42fznbg8rw039yaxfh6rzbaj2gaxbz1";
+  };
+
+  # remove at next bump, tag is one commit early for 0.8.0
+  postPatch = ''
+    substituteInPlace pygtail/core.py \
+      --replace 0.7.0 0.8.0
+  '';
+
+  meta = with lib; {
+    description = "A library for reading log file lines that have not been read";
+    license = licenses.gpl2Plus;
+    homepage = https://github.com/bgreenlee/pygtail;
+  };
+}
diff --git a/pkgs/development/python-modules/pyhomematic/default.nix b/pkgs/development/python-modules/pyhomematic/default.nix
index 1191b09ec38..90616c09269 100644
--- a/pkgs/development/python-modules/pyhomematic/default.nix
+++ b/pkgs/development/python-modules/pyhomematic/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "pyhomematic";
-  version = "0.1.39";
+  version = "0.1.40";
 
   disabled = !isPy3k;
 
@@ -11,9 +11,12 @@ buildPythonPackage rec {
     owner = "danielperna84";
     repo = pname;
     rev = version;
-    sha256 = "1g181x2mrhxcaswr6vi2m7if97wv4rf2g2pny60334sciga8njfz";
+    sha256 = "0rflfak505cgc69594yc9chz5mblqvc2d7bbbfcddzhlhs5qcsq2";
   };
 
+  # 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 00000000000..ad6742f5deb
--- /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 577cd9142f9..038b12b3a9e 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 a2d019374c9..d90ff458107 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/pyqt/5.x.nix b/pkgs/development/python-modules/pyqt/5.x.nix
index 225da204e21..50cb8ceba91 100644
--- a/pkgs/development/python-modules/pyqt/5.x.nix
+++ b/pkgs/development/python-modules/pyqt/5.x.nix
@@ -9,6 +9,7 @@ let
   version = "5.10";
 
   inherit (pythonPackages) buildPythonPackage python dbus-python sip;
+
 in buildPythonPackage {
   pname = pname;
   version = version;
@@ -27,13 +28,15 @@ in buildPythonPackage {
     sha256 = "0l2zy6b7bfjxmg4bb8yikg6i8iy2xdwmvk7knfmrzfpqbmkycbrl";
   };
 
-  nativeBuildInputs = [ pkgconfig qmake ];
+  outputs = [ "out" "dev" ];
 
-  buildInputs = [
-    lndir qtbase qtsvg qtwebkit qtwebengine dbus_libs
-  ] ++ lib.optional withWebSockets qtwebsockets ++ lib.optional withConnectivity qtconnectivity;
+  nativeBuildInputs = [ pkgconfig qmake lndir ];
 
-  propagatedBuildInputs = [ sip ];
+  buildInputs = [ dbus_libs ];
+
+  propagatedBuildInputs = [
+    sip qtbase qtsvg qtwebkit qtwebengine
+  ] ++ lib.optional withWebSockets qtwebsockets ++ lib.optional withConnectivity qtconnectivity;
 
   configurePhase = ''
     runHook preConfigure
diff --git a/pkgs/development/python-modules/pysha3/default.nix b/pkgs/development/python-modules/pysha3/default.nix
new file mode 100644
index 00000000000..4df98623e11
--- /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 41b42bb63ec..74ff0be3833 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 00000000000..3447c64cf6b
--- /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 2694e9c1ea0..defbbdbc0c2 100644
--- a/pkgs/development/python-modules/pytest-mock/default.nix
+++ b/pkgs/development/python-modules/pytest-mock/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi, isPy3k, pytest, mock, setuptools_scm }:
+{ lib, buildPythonPackage, fetchPypi, fetchpatch, isPy3k, pytest, mock, setuptools_scm }:
 
 buildPythonPackage rec {
   pname = "pytest-mock";
diff --git a/pkgs/development/python-modules/pytest-xdist/default.nix b/pkgs/development/python-modules/pytest-xdist/default.nix
index 596ce38ed0a..38d34a95854 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 9b7f5cc12de..7288ad0332b 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 00000000000..ba29154df3a
--- /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 00000000000..c44af185a10
--- /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 38649ca1985..f4d87dc035c 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/pytools/default.nix b/pkgs/development/python-modules/pytools/default.nix
index 2bf7413c600..1fba3303e3f 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 af0b64fc340..d9982919493 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 00000000000..d9736dcb6f3
--- /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 44650618f5f..234088d1f51 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 00000000000..4eb3a33926f
--- /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 e58066cbef4..af1f28d6d72 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 72407131cb1..f29cafb7aee 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 6a4a8867025..22f35121119 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/scapy/default.nix b/pkgs/development/python-modules/scapy/default.nix
index 1f4a34d18a3..d7b2a827f7d 100644
--- a/pkgs/development/python-modules/scapy/default.nix
+++ b/pkgs/development/python-modules/scapy/default.nix
@@ -1,30 +1,36 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub, isPy3k, isPyPy
+{ stdenv, lib, buildPythonPackage, fetchFromGitHub, isPyPy, isPy3k, pythonOlder
 , matplotlib, pycrypto, ecdsa
-# Python3: pyx
+, enum34, mock
 }:
 
 buildPythonPackage rec {
   pname = "scapy";
-  version = "2.3.3";
+  version = "2.4.0";
   name = pname + "-" + version;
 
-  disabled = isPy3k || isPyPy;
+  disabled = isPyPy;
 
   src = fetchFromGitHub {
     owner = "secdev";
     repo = "scapy";
     rev = "v${version}";
-    sha256 = "1c22407vhksnhc0rwrslnp9zy05qmk2zmdm2imm3iw7g6kx7gak1";
+    sha256 = "0dw6kl1qi9bf3rbm79gb1h40ms8y0b5dbmpip841p2905d5r2isj";
   };
 
-  # Temporary workaround, only needed for 2.3.3
+  # TODO: Temporary workaround
   patches = [ ./fix-version-1.patch ./fix-version-2.patch ];
 
-  propagatedBuildInputs = [ matplotlib pycrypto ecdsa ];
+  propagatedBuildInputs =
+    [ matplotlib pycrypto ecdsa ]
+    ++ lib.optional (isPy3k && pythonOlder "3.4") [ enum34 ]
+    ++ lib.optional doCheck [ mock ];
+
+  # Tests fail with Python 3.6 (seems to be an upstream bug, I'll investigate)
+  doCheck = if isPy3k then false else true;
 
   meta = with stdenv.lib; {
     description = "Powerful interactive network packet manipulation program";
-    homepage = http://www.secdev.org/projects/scapy/;
+    homepage = https://scapy.net/;
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos bjornfor ];
diff --git a/pkgs/development/python-modules/scapy/fix-version-1.patch b/pkgs/development/python-modules/scapy/fix-version-1.patch
index 3864a41964e..33d099e7a64 100644
--- a/pkgs/development/python-modules/scapy/fix-version-1.patch
+++ b/pkgs/development/python-modules/scapy/fix-version-1.patch
@@ -1,11 +1,11 @@
 --- a/setup.py	2018-02-15 22:14:08.531591678 +0100
-+++ b/setup.py	2018-02-15 22:14:57.947703737 +0100
++++ b/setup.py	2018-03-27 17:15:38.617315539 +0200
 @@ -47,7 +47,7 @@
  
  setup(
      name='scapy',
 -    version=__import__('scapy').VERSION,
-+    version='2.3.3',
++    version='2.4.0',
      packages=[
          'scapy',
          'scapy/arch',
diff --git a/pkgs/development/python-modules/scapy/fix-version-2.patch b/pkgs/development/python-modules/scapy/fix-version-2.patch
index 62d43b51fbb..41a195fb722 100644
--- a/pkgs/development/python-modules/scapy/fix-version-2.patch
+++ b/pkgs/development/python-modules/scapy/fix-version-2.patch
@@ -1,11 +1,15 @@
---- a/scapy/__init__.py	2017-12-29 18:57:35.315472160 +0100
-+++ b/scapy/__init__.py	2018-02-15 22:36:43.102132489 +0100
-@@ -73,7 +73,7 @@
-                 tag = f.read()
-             return tag
-         except:
--            return 'unknown.version'
-+            return '2.3.3'
+--- a/scapy/__init__.py	2018-03-27 17:38:52.706481269 +0200
++++ b/scapy/__init__.py	2018-03-27 17:39:56.576688890 +0200
+@@ -82,9 +82,10 @@
+             if match:
+                 return "git-archive.dev" + match.group(1)
+             elif sha1:
+-                return "git-archive.dev" + sha1
++                return '2.4.0'
+             else:
+-                return 'unknown.version'
++                return '2.4.0'
++
  
  VERSION = _version()
  
diff --git a/pkgs/development/python-modules/scikitlearn/default.nix b/pkgs/development/python-modules/scikitlearn/default.nix
index 6d32b056a0a..00bdcae1b9a 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 6b64cd18b4f..1661dd2cf3a 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/service_identity/default.nix b/pkgs/development/python-modules/service_identity/default.nix
index 779e974f15e..93e172a4f60 100644
--- a/pkgs/development/python-modules/service_identity/default.nix
+++ b/pkgs/development/python-modules/service_identity/default.nix
@@ -13,8 +13,6 @@
 buildPythonPackage rec {
   pname = "service_identity";
   version = "17.0.0";
-  name = "${pname}-${version}";
-
 
   src = fetchFromGitHub {
     owner = "pyca";
@@ -33,6 +31,6 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Service identity verification for pyOpenSSL";
     license = licenses.mit;
-    homepage = "https://service-identity.readthedocs.io";
+    homepage = https://service-identity.readthedocs.io;
   };
 }
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index b8fd011c4ea..cd07a64ae49 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 7246205619f..6f10cfdf3ba 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/slimit/default.nix b/pkgs/development/python-modules/slimit/default.nix
new file mode 100644
index 00000000000..ff4c63891e5
--- /dev/null
+++ b/pkgs/development/python-modules/slimit/default.nix
@@ -0,0 +1,36 @@
+{ lib, buildPythonPackage, fetchPypi, isPy3k, fetchpatch, python, ply }:
+
+buildPythonPackage rec {
+  pname = "slimit";
+  version = "0.8.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "f433dcef899f166b207b67d91d3f7344659cb33b8259818f084167244e17720b";
+  };
+
+  # Some patches from https://github.com/rspivak/slimit/pull/65
+  patches = lib.optionals isPy3k [
+    (fetchpatch {
+      url = https://github.com/lelit/slimit/commit/a61e12d88cc123c4b7af2abef21d06fd182e561a.patch;
+      sha256 = "0lbhvkgn4l8g9fwvb81rfwjx7hsaq2pid8a5gczdk1ba65wfvdq5";
+    })
+    (fetchpatch {
+      url = https://github.com/lelit/slimit/commit/e8331659fb89e8a4613c5e4e338c877fead9c551.patch;
+      sha256 = "1hv4ysn09c9bfd5bxhhrp51hsi81hdidmx0y7zcrjjiich9ayrni";
+    })
+  ];
+
+  propagatedBuildInputs = [ ply ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover -s src/slimit
+  '';
+
+  meta = with lib; {
+    description = "JavaScript minifier";
+    homepage = http://slimit.readthedocs.org/;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 6c7c3c8400c..b94374aeda8 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 00000000000..02e5711e888
--- /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 2256bcc7310..fb37279ea84 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 00000000000..4911c982cd0
--- /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 18540cb63f8..00ea37e3ada 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 0fa889b88f2..5d5e6d4bfd2 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 00000000000..9ac04e18e4f
--- /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/stem/default.nix b/pkgs/development/python-modules/stem/default.nix
new file mode 100644
index 00000000000..1df139ab29c
--- /dev/null
+++ b/pkgs/development/python-modules/stem/default.nix
@@ -0,0 +1,30 @@
+{ lib, buildPythonPackage, fetchPypi, python, mock }:
+
+buildPythonPackage rec {
+  pname = "stem";
+  version = "1.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1va9p3ij7lxg6ixfsvaql06dn11l3fgpxmss1dhlvafm7sqizznp";
+  };
+
+  postPatch = ''
+    rm test/unit/installation.py
+    sed -i "/test.unit.installation/d" test/settings.cfg
+  '';
+
+  checkInputs = [ mock ];
+
+  checkPhase = ''
+    touch .gitignore
+    ${python.interpreter} run_tests.py -u
+  '';
+
+  meta = with lib; {
+    description = "Controller library that allows applications to interact with Tor";
+    homepage = https://stem.torproject.org/;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ phreedom ];
+  };
+}
diff --git a/pkgs/development/python-modules/stripe/default.nix b/pkgs/development/python-modules/stripe/default.nix
index 7e7aa4756bb..95da0ec9b4f 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/svg-path/default.nix b/pkgs/development/python-modules/svg-path/default.nix
new file mode 100644
index 00000000000..04031fcbc10
--- /dev/null
+++ b/pkgs/development/python-modules/svg-path/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+buildPythonPackage rec {
+  pname = "svg.path";
+  version = "2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "08kp03i4yiqdkz7a7l7d7kzszahmhigrml2502zi1ybndrh7ayxw";
+  };
+
+  meta = with stdenv.lib; {
+    description = "SVG path objects and parser";
+    homepage = https://github.com/regebro/svg.path;
+    license = licenses.mit;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+}
diff --git a/pkgs/development/python-modules/tablib/default.nix b/pkgs/development/python-modules/tablib/default.nix
new file mode 100644
index 00000000000..9f1bf2390b6
--- /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 00000000000..0a1c4e76412
--- /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 00000000000..94aebc59512
--- /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 333c4825f0f..47b8b04c4f6 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 15794caf58b..2c6df953e16 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 00000000000..94261b10e3d
--- /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 12edef190dc..6e1baf2f2e9 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 00000000000..87b62cd78ac
--- /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/toml/default.nix b/pkgs/development/python-modules/toml/default.nix
new file mode 100644
index 00000000000..a80657dc4b4
--- /dev/null
+++ b/pkgs/development/python-modules/toml/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "toml";
+  version = "0.9.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0bdbpbip67wdm6c7xwc6mmbmskyradj4cdxn1iibj4fcx1nbv1lf";
+  };
+
+  # This package has a test script (built for Travis) that involves a)
+  # looking in the home directory for a binary test runner and b) using
+  # git to download a test suite.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "a Python library for parsing and creating TOML";
+    homepage = "https://github.com/uiri/toml";
+    license = licenses.mit;
+    maintainers = with maintainers; [ twey ];
+  };
+}
diff --git a/pkgs/development/python-modules/tqdm/default.nix b/pkgs/development/python-modules/tqdm/default.nix
index 209ee8ccd6b..44943cdabab 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 00000000000..767bb21f0fd
--- /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 cd2d6c9a365..09004e9337a 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 00000000000..262d2a5d33a
--- /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 00000000000..badecc776d7
--- /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/xarray/default.nix b/pkgs/development/python-modules/xarray/default.nix
index afde3f3b45b..0cf38e80d2d 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 00000000000..526376a4163
--- /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 00000000000..217c823afe5
--- /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 00000000000..38c060aa8e8
--- /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 5502a8236da..f3dbf70eecf 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 ];
diff --git a/pkgs/development/python-modules/zope_copy/default.nix b/pkgs/development/python-modules/zope_copy/default.nix
index 305928c1846..6bd7ae33fb9 100644
--- a/pkgs/development/python-modules/zope_copy/default.nix
+++ b/pkgs/development/python-modules/zope_copy/default.nix
@@ -8,20 +8,23 @@
 
 
 buildPythonPackage rec {
-  pname = "zope_copy";
-  version = "4.0.2";
+  pname = "zope.copy";
+  version = "4.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    sha256 = "eb2a95866df1377741876a3ee62d8600e80089e6246e1a235e86791b29534457";
+    sha256 = "702dbb52e2427a1cc2e2b4b3f5a40c64dcbf9ebed85888ae8fa67172263a6994";
   };
 
   propagatedBuildInputs = [ zope_interface ];
 
   checkInputs = [ zope_location zope_schema ];
 
+  checkPhase = ''
+    python -m unittest discover -s src/zope/copy
+  '';
+
   meta = {
     maintainers = with lib.maintainers; [ domenkozar ];
   };
-}
\ No newline at end of file
+}