about summary refs log tree commit diff
path: root/pkgs/development/python-modules
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules')
-rw-r--r--pkgs/development/python-modules/aiohttp-socks/default.nix25
-rw-r--r--pkgs/development/python-modules/aiorpcx/default.nix25
-rw-r--r--pkgs/development/python-modules/aniso8601/default.nix8
-rw-r--r--pkgs/development/python-modules/asciimatics/default.nix48
-rw-r--r--pkgs/development/python-modules/astropy/default.nix4
-rw-r--r--pkgs/development/python-modules/audio-metadata/default.nix37
-rw-r--r--pkgs/development/python-modules/azure-storage-blob/default.nix33
-rw-r--r--pkgs/development/python-modules/azure-storage-common/default.nix37
-rw-r--r--pkgs/development/python-modules/azure-storage-file/default.nix33
-rw-r--r--pkgs/development/python-modules/azure-storage-nspkg/default.nix29
-rw-r--r--pkgs/development/python-modules/azure-storage-queue/default.nix31
-rw-r--r--pkgs/development/python-modules/base58/default.nix14
-rw-r--r--pkgs/development/python-modules/beancount/default.nix4
-rw-r--r--pkgs/development/python-modules/bidict/default.nix42
-rw-r--r--pkgs/development/python-modules/bitstruct/default.nix18
-rw-r--r--pkgs/development/python-modules/bokeh/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/braintree/default.nix27
-rw-r--r--pkgs/development/python-modules/bugwarrior/default.nix4
-rw-r--r--pkgs/development/python-modules/cachetools/1.nix17
-rw-r--r--pkgs/development/python-modules/cfgv/default.nix4
-rw-r--r--pkgs/development/python-modules/click-default-group/default.nix25
-rw-r--r--pkgs/development/python-modules/cmd2/default.nix3
-rw-r--r--pkgs/development/python-modules/configargparse/default.nix4
-rw-r--r--pkgs/development/python-modules/cryptography/default.nix14
-rw-r--r--pkgs/development/python-modules/csvkit/default.nix4
-rw-r--r--pkgs/development/python-modules/cypari2/default.nix4
-rw-r--r--pkgs/development/python-modules/detox/default.nix4
-rw-r--r--pkgs/development/python-modules/discogs_client/default.nix4
-rw-r--r--pkgs/development/python-modules/distributed/default.nix4
-rw-r--r--pkgs/development/python-modules/django-compat/default.nix23
-rw-r--r--pkgs/development/python-modules/django-cors-headers/default.nix27
-rw-r--r--pkgs/development/python-modules/django-hijack-admin/default.nix14
-rw-r--r--pkgs/development/python-modules/django-hijack/default.nix7
-rw-r--r--pkgs/development/python-modules/django-rest-auth/default.nix29
-rw-r--r--pkgs/development/python-modules/django_reversion/default.nix3
-rw-r--r--pkgs/development/python-modules/djangorestframework-jwt/default.nix30
-rw-r--r--pkgs/development/python-modules/dugong/default.nix5
-rw-r--r--pkgs/development/python-modules/flask-socketio/default.nix4
-rw-r--r--pkgs/development/python-modules/flexmock/default.nix4
-rw-r--r--pkgs/development/python-modules/gast/default.nix4
-rw-r--r--pkgs/development/python-modules/glances/default.nix4
-rw-r--r--pkgs/development/python-modules/google-music-proto/default.nix37
-rw-r--r--pkgs/development/python-modules/google-music-utils/default.nix35
-rw-r--r--pkgs/development/python-modules/google-music/default.nix39
-rw-r--r--pkgs/development/python-modules/grandalf/default.nix41
-rw-r--r--pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch15
-rw-r--r--pkgs/development/python-modules/iptools/default.nix4
-rw-r--r--pkgs/development/python-modules/irc/default.nix4
-rw-r--r--pkgs/development/python-modules/jaraco_classes/default.nix4
-rw-r--r--pkgs/development/python-modules/jaraco_itertools/default.nix22
-rw-r--r--pkgs/development/python-modules/jaraco_logging/default.nix22
-rw-r--r--pkgs/development/python-modules/jq/default.nix27
-rw-r--r--pkgs/development/python-modules/jq/jq-py-setup.patch130
-rw-r--r--pkgs/development/python-modules/jsonrpclib-pelix/default.nix4
-rw-r--r--pkgs/development/python-modules/keyrings-alt/default.nix4
-rw-r--r--pkgs/development/python-modules/logzero/default.nix23
-rw-r--r--pkgs/development/python-modules/mrbob/default.nix4
-rw-r--r--pkgs/development/python-modules/mysql-connector/default.nix4
-rw-r--r--pkgs/development/python-modules/nanomsg-python/default.nix25
-rw-r--r--pkgs/development/python-modules/nanotime/default.nix27
-rw-r--r--pkgs/development/python-modules/nuitka/default.nix4
-rw-r--r--pkgs/development/python-modules/numba/default.nix3
-rw-r--r--pkgs/development/python-modules/obfsproxy/default.nix3
-rw-r--r--pkgs/development/python-modules/pandas/0.17.1.nix76
-rw-r--r--pkgs/development/python-modules/paste/default.nix4
-rw-r--r--pkgs/development/python-modules/pastescript/default.nix3
-rw-r--r--pkgs/development/python-modules/peewee/default.nix4
-rw-r--r--pkgs/development/python-modules/perf/default.nix4
-rw-r--r--pkgs/development/python-modules/pprintpp/default.nix30
-rw-r--r--pkgs/development/python-modules/progressbar2/default.nix27
-rw-r--r--pkgs/development/python-modules/pyaxmlparser/default.nix3
-rw-r--r--pkgs/development/python-modules/pychromecast/default.nix17
-rw-r--r--pkgs/development/python-modules/pygame/git.nix47
-rw-r--r--pkgs/development/python-modules/pymongo/2_9_1.nix24
-rw-r--r--pkgs/development/python-modules/pymongo/default.nix8
-rw-r--r--pkgs/development/python-modules/pyrsistent/default.nix4
-rw-r--r--pkgs/development/python-modules/pyshp/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-benchmark/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-django/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest/default.nix85
-rw-r--r--pkgs/development/python-modules/python-gitlab/default.nix4
-rw-r--r--pkgs/development/python-modules/python-utils/default.nix22
-rw-r--r--pkgs/development/python-modules/pyutil/default.nix3
-rw-r--r--pkgs/development/python-modules/pywal/default.nix9
-rw-r--r--pkgs/development/python-modules/qtawesome/default.nix4
-rw-r--r--pkgs/development/python-modules/recommonmark/default.nix28
-rw-r--r--pkgs/development/python-modules/remotecv/default.nix4
-rw-r--r--pkgs/development/python-modules/robomachine/default.nix4
-rw-r--r--pkgs/development/python-modules/sortedcollections/default.nix8
-rw-r--r--pkgs/development/python-modules/stevedore/default.nix4
-rw-r--r--pkgs/development/python-modules/supervisor/default.nix4
-rw-r--r--pkgs/development/python-modules/tenacity/default.nix34
-rw-r--r--pkgs/development/python-modules/trezor/default.nix37
-rw-r--r--pkgs/development/python-modules/trio/default.nix4
-rw-r--r--pkgs/development/python-modules/twilio/default.nix4
-rw-r--r--pkgs/development/python-modules/uncompyle6/default.nix4
-rw-r--r--pkgs/development/python-modules/unittest-xml-reporting/default.nix4
-rw-r--r--pkgs/development/python-modules/vine/default.nix4
-rw-r--r--pkgs/development/python-modules/w3lib/default.nix4
-rw-r--r--pkgs/development/python-modules/worldengine/default.nix3
-rw-r--r--pkgs/development/python-modules/yamllint/default.nix4
-rw-r--r--pkgs/development/python-modules/zm-py/default.nix29
104 files changed, 1301 insertions, 425 deletions
diff --git a/pkgs/development/python-modules/aiohttp-socks/default.nix b/pkgs/development/python-modules/aiohttp-socks/default.nix
new file mode 100644
index 000000000000..f898c9313e1f
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-socks/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, aiohttp }:
+
+buildPythonPackage rec {
+  pname = "aiohttp-socks";
+  version = "0.2.2";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "aiohttp_socks";
+    sha256 = "0473702jk66xrgpm28wbdgpnak4v0dh2qmdjw7ky7hf3lwwqkggf";
+  };
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  # Checks needs internet access
+  doCheck = false;
+
+  disabled = pythonOlder "3.5.3";
+
+  meta = {
+    description = "SOCKS proxy connector for aiohttp";
+    license = lib.licenses.asl20;
+    homepage = https://github.com/romis2012/aiohttp-socks;
+  };
+}
diff --git a/pkgs/development/python-modules/aiorpcx/default.nix b/pkgs/development/python-modules/aiorpcx/default.nix
new file mode 100644
index 000000000000..1c5d651264e0
--- /dev/null
+++ b/pkgs/development/python-modules/aiorpcx/default.nix
@@ -0,0 +1,25 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder, attrs }:
+
+buildPythonPackage rec {
+  pname = "aiorpcx";
+  version = "0.10.2";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "aiorpcX";
+    sha256 = "1p88k15jh0d2a18pnnbfcamsqi2bxvmmhpizmdlxfdxf8vy5ggyj";
+  };
+
+  propagatedBuildInputs = [ attrs ];
+
+  disabled = pythonOlder "3.6";
+
+  # Checks needs internet access
+  doCheck = false;
+
+  meta = {
+    description = "Transport, protocol and framing-independent async RPC client and server implementation";
+    license = lib.licenses.mit;
+    homepage = https://github.com/kyuupichan/aiorpcX;
+  };
+}
diff --git a/pkgs/development/python-modules/aniso8601/default.nix b/pkgs/development/python-modules/aniso8601/default.nix
index 163e2c9b2099..4f6602395300 100644
--- a/pkgs/development/python-modules/aniso8601/default.nix
+++ b/pkgs/development/python-modules/aniso8601/default.nix
@@ -1,9 +1,9 @@
 { stdenv, buildPythonPackage, fetchPypi
-, dateutil }:
+, dateutil, mock, isPy3k }:
 
 buildPythonPackage rec {
   pname = "aniso8601";
-  version = "4.0.1";
+  version = "4.1.0";
 
   meta = with stdenv.lib; {
     description = "Parses ISO 8601 strings.";
@@ -13,8 +13,10 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ dateutil ];
 
+  checkInputs = stdenv.lib.optional (!isPy3k) mock;
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "15cwnadw2xdczdi13k9grrgqq67hxgys4l155dqsl2zh3glhsmp7";
+    sha256 = "1x49k287ky1spv3msc9fwmc7ydyw6rlcr14nslgcmpjfn3pgzh03";
   };
 }
diff --git a/pkgs/development/python-modules/asciimatics/default.nix b/pkgs/development/python-modules/asciimatics/default.nix
new file mode 100644
index 000000000000..d83e2fdbf443
--- /dev/null
+++ b/pkgs/development/python-modules/asciimatics/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pyfiglet
+, pillow
+, wcwidth
+, future
+, mock
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "asciimatics";
+  version = "1.10.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9101b0b6885542f324980bbe13a772475cd6a12678f601228eaaea412db919ab";
+  };
+
+  nativeBuildInputs = [
+    setuptools_scm
+  ];
+
+  propagatedBuildInputs = [
+    pyfiglet
+    pillow
+    wcwidth
+    future
+  ];
+
+  checkInputs = [
+    mock
+    nose
+  ];
+
+  # tests require a pty emulator
+  # which is too complicated to setup here
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Helps to create full-screen text UIs (from interactive forms to ASCII animations) on any platform";
+    homepage = https://github.com/peterbrittain/asciimatics;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/astropy/default.nix b/pkgs/development/python-modules/astropy/default.nix
index 1fd9b53054b5..0ba779ec93e5 100644
--- a/pkgs/development/python-modules/astropy/default.nix
+++ b/pkgs/development/python-modules/astropy/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "astropy";
-  version = "3.1";
+  version = "3.1.1";
 
   disabled = !isPy3k; # according to setup.py
 
@@ -15,7 +15,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1ldmdwfp0g8293k4gyp962nv7ik4zw83p1khkq8jqkzmk7qf040y";
+    sha256 = "0fzm2q922qi68ns5biy807dzmgz1i9gqdh73lcafs0gfk8zyc9v5";
   };
 
   propagatedBuildInputs = [ pytest numpy ]; # yes it really has pytest in install_requires
diff --git a/pkgs/development/python-modules/audio-metadata/default.nix b/pkgs/development/python-modules/audio-metadata/default.nix
new file mode 100644
index 000000000000..633daab7d4e3
--- /dev/null
+++ b/pkgs/development/python-modules/audio-metadata/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, attrs
+, bidict
+, bitstruct
+, more-itertools
+, pprintpp
+}:
+
+buildPythonPackage rec {
+  pname = "audio-metadata";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1jd0wzhh9as2qyiwggqmvsbsm5nlb73qnxix2mcar53cddvwrvj7";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    bidict
+    bitstruct
+    more-itertools
+    pprintpp
+  ];
+
+  # No tests
+  doCheck = false;
+
+  disabled = pythonOlder "3.6";
+
+  meta = with lib; {
+    homepage = https://github.com/thebigmunch/audio-metadata;
+    description = "A library for reading and, in the future, writing metadata from audio files";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-storage-blob/default.nix b/pkgs/development/python-modules/azure-storage-blob/default.nix
new file mode 100644
index 000000000000..9a84a7326850
--- /dev/null
+++ b/pkgs/development/python-modules/azure-storage-blob/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-storage-common
+, isPy3k
+, futures
+}:
+
+buildPythonPackage rec {
+  pname = "azure-storage-blob";
+  version = "1.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "65ebe2e54460566c2077c6b3773a2a0623eabc7b95602010cb51b84077087fda";
+  };
+
+  propagatedBuildInputs = [
+    azure-common
+    azure-storage-common
+  ] ++ lib.optional (!isPy3k) futures;
+
+  # has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Client library for Microsoft Azure Storage services containing the blob service APIs";
+    homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-blob;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-storage-common/default.nix b/pkgs/development/python-modules/azure-storage-common/default.nix
new file mode 100644
index 000000000000..6561163c3a2b
--- /dev/null
+++ b/pkgs/development/python-modules/azure-storage-common/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, cryptography
+, python-dateutil
+, requests
+, isPy3k
+, azure-storage-nspkg
+}:
+
+buildPythonPackage rec {
+  pname = "azure-storage-common";
+  version = "1.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7ab607f9b8fd27b817482194b1e7d43484c65dcf2605aae21ad8706c6891934d";
+  };
+
+  propagatedBuildInputs = [
+    azure-common
+    cryptography
+    python-dateutil
+    requests
+  ] ++ lib.optional (!isPy3k) azure-storage-nspkg;
+
+  # has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Client library for Microsoft Azure Storage services containing common code shared by blob, file and queue";
+    homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-common;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-storage-file/default.nix b/pkgs/development/python-modules/azure-storage-file/default.nix
new file mode 100644
index 000000000000..ffdb2f656c1d
--- /dev/null
+++ b/pkgs/development/python-modules/azure-storage-file/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-storage-common
+, isPy3k
+, futures
+}:
+
+buildPythonPackage rec {
+  pname = "azure-storage-file";
+  version = "1.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5217b0441b671246a8d5f506a459fa3af084eeb9297c5be3bbe95d75d23bac2f";
+  };
+
+  propagatedBuildInputs = [
+    azure-common
+    azure-storage-common
+  ] ++ lib.optional (!isPy3k) futures;
+
+  # has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Client library for Microsoft Azure Storage services containing the file service APIs";
+    homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-file;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-storage-nspkg/default.nix b/pkgs/development/python-modules/azure-storage-nspkg/default.nix
new file mode 100644
index 000000000000..5efef893a756
--- /dev/null
+++ b/pkgs/development/python-modules/azure-storage-nspkg/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-nspkg
+}:
+
+buildPythonPackage rec {
+  pname = "azure-storage-nspkg";
+  version = "3.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6f3bbe8652d5f542767d8433e7f96b8df7f518774055ac7c92ed7ca85f653811";
+  };
+
+  propagatedBuildInputs = [
+    azure-nspkg
+  ];
+
+  # has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Client library for Microsoft Azure Storage services owning the azure.storage namespace, user should not use this directly";
+    homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-nspkg;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/azure-storage-queue/default.nix b/pkgs/development/python-modules/azure-storage-queue/default.nix
new file mode 100644
index 000000000000..1ca1288e9b44
--- /dev/null
+++ b/pkgs/development/python-modules/azure-storage-queue/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, azure-common
+, azure-storage-common
+}:
+
+buildPythonPackage rec {
+  pname = "azure-storage-queue";
+  version = "1.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0bafe9e61c0ce7b3f3ecadea21e931dab3248bd4989dc327a8666c5deae7f7ed";
+  };
+
+  propagatedBuildInputs = [
+    azure-common
+    azure-storage-common
+  ];
+
+  # has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Client library for Microsoft Azure Storage services containing the queue service APIs";
+    homepage = https://github.com/Azure/azure-storage-python/tree/master/azure-storage-queue;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/base58/default.nix b/pkgs/development/python-modules/base58/default.nix
index 43b2761f6bca..aafd73b8d8d5 100644
--- a/pkgs/development/python-modules/base58/default.nix
+++ b/pkgs/development/python-modules/base58/default.nix
@@ -1,17 +1,15 @@
-{ stdenv, fetchFromGitHub, buildPythonPackage, pytest, pyhamcrest }:
+{ stdenv, fetchPypi, buildPythonPackage, pytest, pyhamcrest }:
 
 buildPythonPackage rec {
   pname = "base58";
-  version = "1.0.0";
+  version = "1.0.3";
 
-  src = fetchFromGitHub {
-    owner = "keis";
-    repo = "base58";
-    rev = "v${version}";
-    sha256 = "0f8isdpvbgw0sqn9bj7hk47y8akpvdl8sn6rkszla0xb92ywj0f6";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9a793c599979c497800eb414c852b80866f28daaed5494703fc129592cc83e60";
   };
 
-  buildInputs = [ pytest pyhamcrest ];
+  checkInputs = [ pytest pyhamcrest ];
   checkPhase = ''
     pytest
   '';
diff --git a/pkgs/development/python-modules/beancount/default.nix b/pkgs/development/python-modules/beancount/default.nix
index e023c721b0e6..0544819570c5 100644
--- a/pkgs/development/python-modules/beancount/default.nix
+++ b/pkgs/development/python-modules/beancount/default.nix
@@ -4,14 +4,14 @@
 , pytest, requests }:
 
 buildPythonPackage rec {
-  version = "2.1.3";
+  version = "2.2.0";
   pname = "beancount";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4b7b0d3633c82ca88d3cb3d31ad2fd2e45a42401cfa94eaa1cb938ffece34f22";
+    sha256 = "1j3fyyqnr5gq71rmkb9q3im8pqppa134zzhmmp4hk4b274g18w31";
   };
 
   # No tests in archive
diff --git a/pkgs/development/python-modules/bidict/default.nix b/pkgs/development/python-modules/bidict/default.nix
new file mode 100644
index 000000000000..ed99686ed27b
--- /dev/null
+++ b/pkgs/development/python-modules/bidict/default.nix
@@ -0,0 +1,42 @@
+{ lib, buildPythonPackage, fetchPypi
+, setuptools_scm
+, sphinx
+, hypothesis
+, py
+, pytest
+, pytest-benchmark
+, sortedcollections
+, sortedcontainers
+}:
+
+buildPythonPackage rec {
+  pname = "bidict";
+  version = "0.17.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1icj0fnfx47n6i33pj5gfrmd1rzpvah1jihhdhqiqx2cy9rs6x4c";
+  };
+
+  nativeBuildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ sphinx ];
+
+  checkInputs = [
+    hypothesis
+    py
+    pytest
+    pytest-benchmark
+    sortedcollections
+    sortedcontainers
+  ];
+  checkPhase = ''
+    pytest tests
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/jab/bidict;
+    description = "Efficient, Pythonic bidirectional map data structures and related functionality";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/bitstruct/default.nix b/pkgs/development/python-modules/bitstruct/default.nix
new file mode 100644
index 000000000000..2bc4a5bbb616
--- /dev/null
+++ b/pkgs/development/python-modules/bitstruct/default.nix
@@ -0,0 +1,18 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  pname = "bitstruct";
+  version = "6.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1znqgy2ikdqn6n6mv1ccfbl0q7x65bh3i9ph0yjl4rihwvxyg9fg";
+  };
+
+  meta = with lib; {
+    homepage = https://github.com/eerimoq/bitstruct;
+    description = "Python bit pack/unpack package";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/bokeh/default.nix b/pkgs/development/python-modules/bokeh/default.nix
index 4d55aec60589..0678d59ea81b 100644
--- a/pkgs/development/python-modules/bokeh/default.nix
+++ b/pkgs/development/python-modules/bokeh/default.nix
@@ -33,11 +33,11 @@
 
 buildPythonPackage rec {
   pname = "bokeh";
-  version = "1.0.2";
+  version = "1.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07rczl2xkkqzpm45m0rlb2hki48b6w1k912gmwacf5aisnc0a0rw";
+    sha256 = "1s0gi4n8bn0ain3k6jz6xzbbpn1jpb7rkadmsri8dkcpwyfhacvs";
   };
 
   disabled = isPyPy;
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index 0d78b3463ccc..ff4d109d38f7 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname =  "boto3";
-  version = "1.9.62"; # N.B: if you change this, change botocore too
+  version = "1.9.75"; # N.B: if you change this, change botocore too
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0rf3ik4bqr0qab2648rcaahycr2sih257ngz8brizyfln0lk1sg9";
+    sha256 = "0l4ifnp7mnf8n7dpf5jf5gwcxccb4qrijqyf3izbz2pdlrv1pw73";
   };
 
   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 699357437b96..b7b0ebcfcdcc 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.12.62"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.12.79"; # N.B: if you change this, change boto3 and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0zgq3cldrh1x65s3vy1mhp1h5nnsdxw7ig1v0di7p8yns3iazsv7";
+    sha256 = "16ikl3lv9q4i8bwzvm11a5q3bds42p36i4ap01fm3r9w1kzxb1wd";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/braintree/default.nix b/pkgs/development/python-modules/braintree/default.nix
new file mode 100644
index 000000000000..5bd545db51cc
--- /dev/null
+++ b/pkgs/development/python-modules/braintree/default.nix
@@ -0,0 +1,27 @@
+{ lib,
+  fetchPypi,
+  requests,
+  buildPythonPackage
+}:
+
+buildPythonPackage rec {
+  pname = "braintree";
+  version = "3.50.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d1d7a6854b623f2c616451fa474113ac7fb8a2cbeb7dfad36dd3312113484030";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  # pypi release does not include tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python library for integration with Braintree";
+    homepage = https://github.com/braintree/braintree_python;
+    license = licenses.mit;
+    maintainers = [ maintainers.ivegotasthma ];
+  };
+}
diff --git a/pkgs/development/python-modules/bugwarrior/default.nix b/pkgs/development/python-modules/bugwarrior/default.nix
index 844aebbbb965..b2b10671f2b9 100644
--- a/pkgs/development/python-modules/bugwarrior/default.nix
+++ b/pkgs/development/python-modules/bugwarrior/default.nix
@@ -1,7 +1,7 @@
 { stdenv, buildPythonPackage, fetchPypi
 , mock, unittest2, nose
 , twiggy, requests, offtrac, bugzilla, taskw, dateutil, pytz, keyring, six
-, jinja2, pycurl, dogpile_cache, lockfile, click, pyxdg, future15 }:
+, jinja2, pycurl, dogpile_cache, lockfile, click, pyxdg, future }:
 
 buildPythonPackage rec {
   pname = "bugwarrior";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   buildInputs = [ mock unittest2 nose /* jira megaplan */ ];
   propagatedBuildInputs = [
     twiggy requests offtrac bugzilla taskw dateutil pytz keyring six
-    jinja2 pycurl dogpile_cache lockfile click pyxdg future15
+    jinja2 pycurl dogpile_cache lockfile click pyxdg future
   ];
 
   # for the moment jira>=0.22 and megaplan>=1.4 are missing for running the test suite.
diff --git a/pkgs/development/python-modules/cachetools/1.nix b/pkgs/development/python-modules/cachetools/1.nix
deleted file mode 100644
index 05f3afe758a6..000000000000
--- a/pkgs/development/python-modules/cachetools/1.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, isPyPy }:
-
-buildPythonPackage rec {
-  pname = "cachetools";
-  version = "2.1.0";
-  disabled = isPyPy;  # a test fails
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "90f1d559512fc073483fe573ef5ceb39bf6ad3d39edc98dc55178a2b2b176fa3";
-  };
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/tkem/cachetools";
-    license = licenses.mit;
-  };
-}
diff --git a/pkgs/development/python-modules/cfgv/default.nix b/pkgs/development/python-modules/cfgv/default.nix
index 2212486978de..181d4e79b106 100644
--- a/pkgs/development/python-modules/cfgv/default.nix
+++ b/pkgs/development/python-modules/cfgv/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "cfgv";
-  version = "1.1.0";
+  version = "1.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1akm5xdbi5kckgnhhfj6qavjwakm44cwqzhfx2ycgh7mkym1qyfi";
+    sha256 = "01mpw8kx0f2py2jwf0fv60k01p11gs0dbar5zq42k4z38xf0bn9r";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/click-default-group/default.nix b/pkgs/development/python-modules/click-default-group/default.nix
new file mode 100644
index 000000000000..673a570c61f0
--- /dev/null
+++ b/pkgs/development/python-modules/click-default-group/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildPythonPackage, fetchFromGitHub, click, pytest }:
+
+buildPythonPackage rec {
+  pname = "click-default-group";
+  version = "1.2";
+
+  # No tests in Pypi tarball
+  src = fetchFromGitHub {
+    owner = "click-contrib";
+    repo = "click-default-group";
+    rev = "v${version}";
+    sha256 = "0lm2k4jvy4ilvv91niawklfnp5mp7wa8c1bicsqdfzrxmw7jliwp";
+  };
+
+  propagatedBuildInputs = [ click ];
+
+  checkInputs = [ pytest ];
+
+  meta = with lib; {
+    homepage = https://github.com/click-contrib/click-default-group;
+    description = "Group to invoke a command without explicit subcommand name";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/cmd2/default.nix b/pkgs/development/python-modules/cmd2/default.nix
index 019ab4e6cdd8..81c38acfca37 100644
--- a/pkgs/development/python-modules/cmd2/default.nix
+++ b/pkgs/development/python-modules/cmd2/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchPypi, buildPythonPackage, pythonOlder, isPy3k
-, pyperclip, six, pyparsing, vim, wcwidth, colorama
+, pyperclip, six, pyparsing, vim, wcwidth, colorama, attrs
 , contextlib2 ? null, typing ? null, setuptools_scm
 , pytest, mock ? null, pytest-mock
 , which, glibcLocales
@@ -36,6 +36,7 @@ buildPythonPackage rec {
     six
     pyparsing
     wcwidth
+    attrs
   ]
   ++ stdenv.lib.optionals (pythonOlder "3.5") [contextlib2 typing]
   ;
diff --git a/pkgs/development/python-modules/configargparse/default.nix b/pkgs/development/python-modules/configargparse/default.nix
index 62e63a8e5b31..7d53f56a5a0a 100644
--- a/pkgs/development/python-modules/configargparse/default.nix
+++ b/pkgs/development/python-modules/configargparse/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "ConfigArgParse";
-  version = "0.13.0";
+  version = "0.14.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e6441aa58e23d3d122055808e5e2220fd742dff6e1e51082d2a4e4ed145dd788";
+    sha256 = "149fy4zya0rsnlkvxbbq43cyr8lscb5k4pj1m6n7f1grwcmzwbif";
   };
 
   # no tests in tarball
diff --git a/pkgs/development/python-modules/cryptography/default.nix b/pkgs/development/python-modules/cryptography/default.nix
index 603f92336c05..ab4aa8e89fd1 100644
--- a/pkgs/development/python-modules/cryptography/default.nix
+++ b/pkgs/development/python-modules/cryptography/default.nix
@@ -66,4 +66,18 @@ buildPythonPackage rec {
   # IOKit's dependencies are inconsistent between OSX versions, so this is the best we
   # can do until nix 1.11's release
   __impureHostDeps = [ "/usr/lib" ];
+
+  meta = with stdenv.lib; {
+    description = "A package which provides cryptographic recipes and primitives";
+    longDescription = ''
+      Cryptography includes both high level recipes and low level interfaces to
+      common cryptographic algorithms such as symmetric ciphers, message
+      digests, and key derivation functions.
+      Our goal is for it to be your "cryptographic standard library". It
+      supports Python 2.7, Python 3.4+, and PyPy 5.3+.
+    '';
+    homepage = https://github.com/pyca/cryptography;
+    license = with licenses; [ asl20 bsd3 psfl ];
+    maintainers = with maintainers; [ primeos ];
+  };
 }
diff --git a/pkgs/development/python-modules/csvkit/default.nix b/pkgs/development/python-modules/csvkit/default.nix
index 7fbdaa8909d6..48f932086cc6 100644
--- a/pkgs/development/python-modules/csvkit/default.nix
+++ b/pkgs/development/python-modules/csvkit/default.nix
@@ -1,6 +1,6 @@
 { lib, fetchPypi, buildPythonPackage, isPy3k
 , agate, agate-excel, agate-dbf, agate-sql, six
-, argparse, ordereddict, simplejson
+, ordereddict, simplejson
 , glibcLocales, nose, mock, unittest2
 }:
 
@@ -16,7 +16,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     agate agate-excel agate-dbf agate-sql six
   ] ++ lib.optionals (!isPy3k) [
-    argparse ordereddict simplejson
+    ordereddict simplejson
   ];
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/cypari2/default.nix b/pkgs/development/python-modules/cypari2/default.nix
index c9f647d77b86..bf46bf9a182b 100644
--- a/pkgs/development/python-modules/cypari2/default.nix
+++ b/pkgs/development/python-modules/cypari2/default.nix
@@ -11,11 +11,11 @@
 buildPythonPackage rec {
   pname = "cypari2";
   # upgrade may break sage, please test the sage build or ping @timokau on upgrade
-  version = "1.3.1";
+  version = "2.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "04f00xp8aaz37v00iqg1mv5wjq00a5qhk8cqa93s13009s9x984r";
+    sha256 = "0mghbmilmy34xp1d50xdx76sijqxmpkm2bcgx2v1mdji2ff7n0yc";
   };
 
   # This differs slightly from the default python installPhase in that it pip-installs
diff --git a/pkgs/development/python-modules/detox/default.nix b/pkgs/development/python-modules/detox/default.nix
index 6f7688ad35e5..00cea5180cd5 100644
--- a/pkgs/development/python-modules/detox/default.nix
+++ b/pkgs/development/python-modules/detox/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "detox";
-  version = "0.15";
+  version = "0.18";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "accde1a79b621df9dfd55b97460e80743a771a3d9a1acd900489a4355f0cc8c7";
+    sha256 = "1yvfhnkw6zpm11yrl2shl794yi68jcfqj8m5n596gqxxbiq6gp90";
   };
 
   buildInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/discogs_client/default.nix b/pkgs/development/python-modules/discogs_client/default.nix
index ce414a09806a..c39bede9e093 100644
--- a/pkgs/development/python-modules/discogs_client/default.nix
+++ b/pkgs/development/python-modules/discogs_client/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "discogs-client";
-  version = "2.2.1";
+  version = "2.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9e32b5e45cff41af8025891c71aa3025b3e1895de59b37c11fd203a8af687414";
+    sha256 = "1n23xy33fdp3dq0hhfdg0lx4z7rhdi74ik8v1mc7rql1jbxl7bmf";
   };
 
   propagatedBuildInputs = [ requests oauthlib ];
diff --git a/pkgs/development/python-modules/distributed/default.nix b/pkgs/development/python-modules/distributed/default.nix
index 5c39811516ce..0ea3a9d8ab4d 100644
--- a/pkgs/development/python-modules/distributed/default.nix
+++ b/pkgs/development/python-modules/distributed/default.nix
@@ -26,12 +26,12 @@
 
 buildPythonPackage rec {
   pname = "distributed";
-  version = "1.25.1";
+  version = "1.25.2";
 
   # get full repository need conftest.py to run tests
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1qay94amxs0k6lmwhy07bq54m5zms0rjmnp7a66fldipjla6w8lg";
+    sha256 = "0rv5831xv5byx0f8ly3mlji207nb3bzq6qmdf7ishrgy9kpphc68";
   };
 
   checkInputs = [ pytest pytest-repeat pytest-faulthandler pytest-timeout mock joblib ];
diff --git a/pkgs/development/python-modules/django-compat/default.nix b/pkgs/development/python-modules/django-compat/default.nix
index d575c1b674b0..32d85cfadd71 100644
--- a/pkgs/development/python-modules/django-compat/default.nix
+++ b/pkgs/development/python-modules/django-compat/default.nix
@@ -1,36 +1,31 @@
 { stdenv, buildPythonPackage, fetchFromGitHub, python,
-  django, django_nose, six
+  django, six
 }:
 buildPythonPackage rec {
   pname = "django-compat";
-  version = "1.0.14";
+  version = "1.0.15";
 
   # the pypi packages don't include everything required for the tests
   src = fetchFromGitHub {
     owner = "arteria";
     repo = "django-compat";
     rev = "v${version}";
-    sha256 = "11g6ra6djkchqk44v8k7biaxd1v69qyyyask5l92vmrvb0qiwvm8";
+    sha256 = "1pr6v38ahrsvxlgmcx69s4b5q5082f44gzi4h3c32sccdc4pwqxp";
   };
 
   checkPhase = ''
     runHook preCheck
 
-    # we have to do a little bit of tinkering to convince the tests to run against the installed package, not the
-    # source directory
-    mkdir -p testbase/compat
-    pushd testbase
-    # note we're not copying the direct contents of compat/ (notably __init__.py) so python won't recognize this as a
-    # package, but the tests need to be in a specific path for the test templates to get picked up.
-    cp -r ../compat/tests compat/
-    cp ../runtests.py .
-    ${python.interpreter} runtests.py compat/tests
-    popd
+    # to convince the tests to run against the installed package, not the source directory, we extract the
+    # tests directory from it then dispose of the actual source
+    mv compat/tests .
+    rm -r compat
+    substituteInPlace runtests.py --replace compat.tests tests
+    ${python.interpreter} runtests.py
 
     runHook postCheck
   '';
 
-  checkInputs = [ django_nose ];
   propagatedBuildInputs = [ django six ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/django-cors-headers/default.nix b/pkgs/development/python-modules/django-cors-headers/default.nix
new file mode 100644
index 000000000000..21f5b841adb8
--- /dev/null
+++ b/pkgs/development/python-modules/django-cors-headers/default.nix
@@ -0,0 +1,27 @@
+{ lib,
+  fetchPypi,
+  django,
+  buildPythonPackage
+}:
+
+buildPythonPackage rec {
+  pname = "django-cors-headers";
+  version = "2.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1qfa9awsj3f0nwygb0vdh4ilcsfi6zinzng73cd5864x2fbyxhn4";
+  };
+
+  propagatedBuildInputs = [ django ];
+
+  # pypi release does not include tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Django app for handling server Cross-Origin Resource Sharing (CORS) headers";
+    homepage = https://github.com/OttoYiu/django-cors-headers;
+    license = licenses.mit;
+    maintainers = [ maintainers.ivegotasthma ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-hijack-admin/default.nix b/pkgs/development/python-modules/django-hijack-admin/default.nix
index e6cd5a3482fe..005d61acab9b 100644
--- a/pkgs/development/python-modules/django-hijack-admin/default.nix
+++ b/pkgs/development/python-modules/django-hijack-admin/default.nix
@@ -2,14 +2,14 @@
   django_hijack, django_nose }:
 buildPythonPackage rec {
   pname = "django-hijack-admin";
-  version = "2.1.5";
+  version = "2.1.10";
 
   # the pypi packages don't include everything required for the tests
   src = fetchFromGitHub {
     owner = "arteria";
     repo = "django-hijack-admin";
     rev = "v${version}";
-    sha256 = "02j75blvkjiz5mv5wc4jxl27rgmjsrl6l67a3p8342jwazzsm6jg";
+    sha256 = "0m98lchp2y43886n67j4s7miyd50pg2r5r966vjnxmd7nx7qkihf";
   };
 
   checkInputs = [ django_nose ];
@@ -17,13 +17,21 @@ buildPythonPackage rec {
 
   checkPhase = ''
     runHook preCheck
+
+    # we have to do a little bit of tinkering to convince the tests to run against the installed package, not the
+    # source directory
+    mkdir testbase
+    pushd testbase
+    mv ../runtests.py .
     ${python.interpreter} runtests.py hijack_admin
+    popd
+
     runHook postCheck
   '';
 
   meta = with stdenv.lib; {
     description = "Admin integration for django-hijack";
-    homepage = https://github.com/arteria/django-hijack;
+    homepage = https://github.com/arteria/django-hijack-admin;
     license = licenses.mit;
     maintainers = with maintainers; [ lsix ];
   };
diff --git a/pkgs/development/python-modules/django-hijack/default.nix b/pkgs/development/python-modules/django-hijack/default.nix
index bdf503cd8492..f41e7d146c97 100644
--- a/pkgs/development/python-modules/django-hijack/default.nix
+++ b/pkgs/development/python-modules/django-hijack/default.nix
@@ -3,15 +3,14 @@
 }:
 buildPythonPackage rec {
   pname = "django-hijack";
-  version = "2.1.9";
-  name = pname + "-" + version;
+  version = "2.1.10";
 
   # the pypi packages don't include everything required for the tests
   src = fetchFromGitHub {
     owner = "arteria";
     repo = "django-hijack";
     rev = "v${version}";
-    sha256 = "109xi93xj37ycdsvainybhg89pcb5sawv6w80px4r6fjvaq4732c";
+    sha256 = "01fwkjdzvw0yx2spwi7zc1yy64ndq1y72bfmk7kxnq5x803m2ak6";
   };
 
   checkInputs = [ django_nose ];
@@ -24,7 +23,7 @@ buildPythonPackage rec {
     # source directory
     mkdir testbase
     pushd testbase
-    cp ../runtests.py .
+    mv ../runtests.py .
     ${python.interpreter} runtests.py hijack
     popd
 
diff --git a/pkgs/development/python-modules/django-rest-auth/default.nix b/pkgs/development/python-modules/django-rest-auth/default.nix
new file mode 100644
index 000000000000..696376b3e4bd
--- /dev/null
+++ b/pkgs/development/python-modules/django-rest-auth/default.nix
@@ -0,0 +1,29 @@
+{ lib,
+  fetchPypi,
+  django,
+  djangorestframework,
+  six,
+  buildPythonPackage
+}:
+
+buildPythonPackage rec {
+  pname = "django-rest-auth";
+  version = "0.9.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ad155a0ed1061b32e3e46c9b25686e397644fd6acfd35d5c03bc6b9d2fc6c82a";
+  };
+
+  propagatedBuildInputs = [ django djangorestframework six ];
+
+  # pypi release does not include tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Django app that makes registration and authentication easy";
+    homepage = https://github.com/Tivix/django-rest-auth;
+    license = licenses.mit;
+    maintainers = [ maintainers.ivegotasthma ];
+  };
+}
diff --git a/pkgs/development/python-modules/django_reversion/default.nix b/pkgs/development/python-modules/django_reversion/default.nix
index 18fbbe2da311..35879a7bfb49 100644
--- a/pkgs/development/python-modules/django_reversion/default.nix
+++ b/pkgs/development/python-modules/django_reversion/default.nix
@@ -13,6 +13,9 @@ buildPythonPackage rec {
     sha256 = "9b8a245917e1bae131d3210c9ca7efbc066e60f32efa436e391c9803c3f4b61b";
   };
 
+  # tests assume the availability of a mysql/postgresql database
+  doCheck = false;
+
   propagatedBuildInputs = [ django ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/djangorestframework-jwt/default.nix b/pkgs/development/python-modules/djangorestframework-jwt/default.nix
new file mode 100644
index 000000000000..f50fd3ff9b61
--- /dev/null
+++ b/pkgs/development/python-modules/djangorestframework-jwt/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, fetchPypi
+, django
+, pyjwt
+, djangorestframework
+, buildPythonPackage
+}:
+
+buildPythonPackage rec {
+  pname = "djangorestframework-jwt";
+  version = "1.11.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "19rng6v1sw14mbjp5cplnrgxjnhlj8faalfw02iihi9s5w1k7zjy";
+  };
+
+  propagatedBuildInputs = [ pyjwt django djangorestframework ];
+
+  # ./runtests.py fails because the project must be tested against a django
+  # installation, there are missing database tables for User, that don't exist.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "JSON Web Token Authentication support for Django REST Framework";
+    homepage = https://github.com/GetBlimp/django-rest-framework-jwt;
+    license = licenses.mit;
+    maintainers = [ maintainers.ivegotasthma ];
+  };
+}
diff --git a/pkgs/development/python-modules/dugong/default.nix b/pkgs/development/python-modules/dugong/default.nix
index 20f4bc7e0c33..09faabb98cc6 100644
--- a/pkgs/development/python-modules/dugong/default.nix
+++ b/pkgs/development/python-modules/dugong/default.nix
@@ -2,12 +2,13 @@
 
 buildPythonPackage rec {
   pname = "dugong";
-  version = "3.5";
+  version = "3.7.4";
 
   disabled = pythonOlder "3.3"; # Library does not support versions older than 3.3
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0y0rdxbiwm03zv6vpvapqilrird3h8ijz7xmb0j7ds5j4p6q3g24";
+    extension = "tar.bz2";
+    sha256 = "1fb9kwib6jsd09bxiz70av6g0blscygkx7xzaz1b7ibd28ms77zd";
   };
 }
diff --git a/pkgs/development/python-modules/flask-socketio/default.nix b/pkgs/development/python-modules/flask-socketio/default.nix
index d722ce03417a..f9f23859748a 100644
--- a/pkgs/development/python-modules/flask-socketio/default.nix
+++ b/pkgs/development/python-modules/flask-socketio/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "Flask-SocketIO";
-  version = "3.1.0";
+  version = "3.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a7188b35f7874903f554b3a1a3a4465213e765c4f17182fa5cb3d9f6915da4c1";
+    sha256 = "1hcl0qnhfqc9x4y6fnvsrablim8yfqfg2i097b2v3srlz69vdyr6";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/flexmock/default.nix b/pkgs/development/python-modules/flexmock/default.nix
index b80aafe3bf2c..f1a0efc07139 100644
--- a/pkgs/development/python-modules/flexmock/default.nix
+++ b/pkgs/development/python-modules/flexmock/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "flexmock";
-  version = "0.10.2";
+  version = "0.10.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fe95c8727f4db73dc8f2f7b4548bffe7992440a965fefd60da291abda5352c2b";
+    sha256 = "031c624pdqm7cc0xh4yz5k69gqxn2bbrjz13s17684q5shn0ik21";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/gast/default.nix b/pkgs/development/python-modules/gast/default.nix
index 036bed9dd792..a85f78dccb28 100644
--- a/pkgs/development/python-modules/gast/default.nix
+++ b/pkgs/development/python-modules/gast/default.nix
@@ -2,10 +2,10 @@
 
 buildPythonPackage rec {
   pname = "gast";
-  version =  "0.2.0";
+  version =  "0.2.2";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0c296xm1vz9x4w4inmdl0k8mnc0i9arw94si2i7pglpc461r0s3h";
+    sha256 = "1w5dzdb3gpcfmd2s0b93d8gff40a1s41rv31458z14inb3s9v4zy";
   };
   checkInputs = [ astunparse ] ;
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/glances/default.nix b/pkgs/development/python-modules/glances/default.nix
index f25723e7ec72..9670428a3e5f 100644
--- a/pkgs/development/python-modules/glances/default.nix
+++ b/pkgs/development/python-modules/glances/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   name = "glances-${version}";
-  version = "3.0.2";
+  version = "3.1.0";
   disabled = isPyPy;
 
   src = fetchFromGitHub {
     owner = "nicolargo";
     repo = "glances";
     rev = "v${version}";
-    sha256 = "1jkjblfk4gbr00j7lny7ajiizzqnp0p1yhzfi14074gwk38z0q14";
+    sha256 = "0zjpp017i8b8bijdaj85rya7rmdqh4g8vkb42q14q2sw6agxz3zi";
   };
 
   patches = lib.optional doCheck ./skip-failing-tests.patch;
diff --git a/pkgs/development/python-modules/google-music-proto/default.nix b/pkgs/development/python-modules/google-music-proto/default.nix
new file mode 100644
index 000000000000..b2196c8748ce
--- /dev/null
+++ b/pkgs/development/python-modules/google-music-proto/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, attrs
+, audio-metadata
+, marshmallow
+, pendulum
+, protobuf
+}:
+
+buildPythonPackage rec {
+  pname = "google-music-proto";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "008nap32hcrlnkkqkf462vwnm6xzrn6fj71lbryfmrakad7rz7bc";
+  };
+
+  propagatedBuildInputs = [
+    attrs
+    audio-metadata
+    marshmallow
+    pendulum
+    protobuf
+  ];
+
+  # No tests
+  doCheck = false;
+
+  disabled = pythonOlder "3.6";
+
+  meta = with lib; {
+    homepage = https://github.com/thebigmunch/google-music-proto;
+    description = "Sans-I/O wrapper of Google Music API calls";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-music-utils/default.nix b/pkgs/development/python-modules/google-music-utils/default.nix
new file mode 100644
index 000000000000..d7fb8a917076
--- /dev/null
+++ b/pkgs/development/python-modules/google-music-utils/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder
+, audio-metadata, multidict, wrapt
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "google-music-utils";
+  version = "2.0.0";
+
+  # Pypi tarball doesn't contain tests
+  src = fetchFromGitHub {
+    owner = "thebigmunch";
+    repo = "google-music-utils";
+    rev = version;
+    sha256 = "0i5zcr1ypnxizi41s3lrplz9m9rmb56s5iihjx61kbybxcq2b6gk";
+  };
+
+  propagatedBuildInputs = [
+    audio-metadata multidict wrapt
+  ];
+
+  checkInputs = [ pytest ];
+  checkPhase = ''
+    pytest
+  '';
+
+  disabled = pythonOlder "3.6";
+
+  meta = with lib; {
+    homepage = https://github.com/thebigmunch/google-music-utils;
+    description = "A set of utility functionality for google-music and related projects";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-music/default.nix b/pkgs/development/python-modules/google-music/default.nix
new file mode 100644
index 000000000000..b0fe0f8a2544
--- /dev/null
+++ b/pkgs/development/python-modules/google-music/default.nix
@@ -0,0 +1,39 @@
+{ lib, buildPythonPackage, fetchPypi, pythonOlder
+, appdirs
+, audio-metadata
+, google-music-proto
+, protobuf
+, requests_oauthlib
+, tenacity
+}:
+
+buildPythonPackage rec {
+  pname = "google-music";
+  version = "3.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "13i9nd62wqfg0f5r7ykr15q83397vdpw0js50fy5nbgs33sbf6b7";
+  };
+
+  propagatedBuildInputs = [
+    appdirs
+    audio-metadata
+    google-music-proto
+    protobuf
+    requests_oauthlib
+    tenacity
+  ];
+
+  # No tests
+  doCheck = false;
+
+  disabled = pythonOlder "3.6";
+
+  meta = with lib; {
+    homepage = https://github.com/thebigmunch/google-music;
+    description = "A Google Music API wrapper";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/grandalf/default.nix b/pkgs/development/python-modules/grandalf/default.nix
new file mode 100644
index 000000000000..79413b26544f
--- /dev/null
+++ b/pkgs/development/python-modules/grandalf/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pyparsing
+, future
+, pytest
+, pytestrunner
+}:
+
+buildPythonPackage rec {
+  pname = "grandalf";
+  version = "0.6";
+
+  # fetch from github to acquire tests
+  src = fetchFromGitHub {
+    owner = "bdcht";
+    repo = "grandalf";
+    rev = "v${version}";
+    sha256 = "1f1l288sqna0bca7dwwvyw7wzg9b2613g6vc0g0vfngm7k75b2jg";
+  };
+
+  propagatedBuildInputs = [
+    pyparsing
+    future
+  ];
+
+  checkInputs = [ pytest pytestrunner ];
+
+  patches = [ ./no-setup-requires-pytestrunner.patch ];
+
+  checkPhase = ''
+    pytest tests
+  '';
+
+  meta = with lib; {
+    description = "A python package made for experimentations with graphs and drawing algorithms";
+    homepage = https://github.com/bdcht/grandalf;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch b/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch
new file mode 100644
index 000000000000..80e12e246ebb
--- /dev/null
+++ b/pkgs/development/python-modules/grandalf/no-setup-requires-pytestrunner.patch
@@ -0,0 +1,15 @@
+diff --git a/setup.py b/setup.py
+index 0470622..d574ceb 100755
+--- a/setup.py
++++ b/setup.py
+@@ -75,8 +75,8 @@ setup(
+     # your project is installed. For an analysis of "install_requires" vs pip's
+     # requirements files see:
+     # https://packaging.python.org/en/latest/requirements.html
+-    setup_requires=['pytest-runner',],
+-    tests_require=['pytest',],
++    setup_requires=[],
++    tests_require=['pytest','pytest-runner',],
+ 
+     install_requires=['pyparsing','future'],
+ 
diff --git a/pkgs/development/python-modules/iptools/default.nix b/pkgs/development/python-modules/iptools/default.nix
index e5c5d298b431..6b33edfca3c7 100644
--- a/pkgs/development/python-modules/iptools/default.nix
+++ b/pkgs/development/python-modules/iptools/default.nix
@@ -5,12 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.6.1";
+  version = "0.7.0";
   pname = "iptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0f03875a5bed740ba4bf44decb6a78679cca914a1ee8a6cc468114485c4d98e3";
+    sha256 = "1sp2v76qqsgqjk0vqfbm2s4sc4mi0gkkpzjnvwih3ymmidilz2hi";
   };
 
   buildInputs = [ nose ];
diff --git a/pkgs/development/python-modules/irc/default.nix b/pkgs/development/python-modules/irc/default.nix
index 99f8d19b350b..672704249dc9 100644
--- a/pkgs/development/python-modules/irc/default.nix
+++ b/pkgs/development/python-modules/irc/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, fetchPypi
+{ buildPythonPackage, fetchPypi, isPy3k
 , six, jaraco_logging, jaraco_text, jaraco_stream, pytz, jaraco_itertools
 , setuptools_scm }:
 
@@ -6,6 +6,8 @@ buildPythonPackage rec {
   pname = "irc";
   version = "17.0";
 
+  disabled = !isPy3k;
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "f9c5fcb72dd230e1387fd4a0114a1935605e0f59ac09dec962313baed74e1365";
diff --git a/pkgs/development/python-modules/jaraco_classes/default.nix b/pkgs/development/python-modules/jaraco_classes/default.nix
index 35c70c3c0330..dadbb8104659 100644
--- a/pkgs/development/python-modules/jaraco_classes/default.nix
+++ b/pkgs/development/python-modules/jaraco_classes/default.nix
@@ -2,10 +2,10 @@
 
 buildPythonPackage rec {
   pname = "jaraco.classes";
-  version = "1.5";
+  version = "2.0";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "002zsifikv6qwigkjlij7jhyvbwv6793m8h9ckbkx2jizmgc80fi";
+    sha256 = "1xfal9085bjh4fv57d6v9ibr5wf4llj73gp1ybdlqd2bralc9hnw";
   };
   doCheck = false;
   buildInputs = [ setuptools_scm ];
diff --git a/pkgs/development/python-modules/jaraco_itertools/default.nix b/pkgs/development/python-modules/jaraco_itertools/default.nix
index 22376b7e0cfc..249054581fab 100644
--- a/pkgs/development/python-modules/jaraco_itertools/default.nix
+++ b/pkgs/development/python-modules/jaraco_itertools/default.nix
@@ -1,14 +1,26 @@
-{ buildPythonPackage, fetchPypi, setuptools_scm
-, inflect, more-itertools, six }:
+{ lib, buildPythonPackage, fetchPypi, setuptools_scm
+, inflect, more-itertools, six, pytest, pytest-flake8 }:
 
 buildPythonPackage rec {
   pname = "jaraco.itertools";
-  version = "3.0.0";
+  version = "4.0.0";
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "19d8557a25c08f7a7b8f1cfa456ebfd615bafa0f045f89bbda55f99661b0626d";
+    sha256 = "1d09zpi593bhr56rwm41kzffr18wif98plgy6xdy0zrbdwfarrxl";
   };
-  doCheck = false;
+
   buildInputs = [ setuptools_scm ];
   propagatedBuildInputs = [ inflect more-itertools six ];
+  checkInputs = [ pytest pytest-flake8 ];
+
+  checkPhase = ''
+    pytest
+  '';
+
+  meta = with lib; {
+    description = "Tools for working with iterables";
+    homepage = https://github.com/jaraco/jaraco.itertools;
+    license = licenses.mit;
+  };
 }
diff --git a/pkgs/development/python-modules/jaraco_logging/default.nix b/pkgs/development/python-modules/jaraco_logging/default.nix
index 2aeb0dc3fa40..68fba6bfb5fb 100644
--- a/pkgs/development/python-modules/jaraco_logging/default.nix
+++ b/pkgs/development/python-modules/jaraco_logging/default.nix
@@ -1,14 +1,26 @@
-{ buildPythonPackage, fetchPypi, setuptools_scm
-, tempora, six }:
+{ lib, buildPythonPackage, fetchPypi, setuptools_scm
+, tempora, six, pytest, pytest-flake8 }:
 
 buildPythonPackage rec {
   pname = "jaraco.logging";
-  version = "1.5.2";
+  version = "2.0";
+
   src = fetchPypi {
     inherit pname version;
-    sha256 = "199pgwx9ziab3gxg6p0c24z8dp3bjpsvvshnmlph9zjsssq0xc93";
+    sha256 = "1lb846j7qs1hgqwkyifv51nhl3f8jimbc4lk8yn9nkaynw0vyzcg";
   };
-  doCheck = false;
+
   buildInputs = [ setuptools_scm ];
   propagatedBuildInputs = [ tempora six ];
+  checkInputs = [ pytest pytest-flake8 ];
+
+  checkPhase = ''
+    PYTHONPATH=".:$PYTHONPATH" pytest
+  '';
+
+  meta = with lib; {
+    description = "Support for Python logging facility";
+    homepage = https://github.com/jaraco/jaraco.logging;
+    license = licenses.mit;
+  };
 }
diff --git a/pkgs/development/python-modules/jq/default.nix b/pkgs/development/python-modules/jq/default.nix
new file mode 100644
index 000000000000..adcdd2b9d823
--- /dev/null
+++ b/pkgs/development/python-modules/jq/default.nix
@@ -0,0 +1,27 @@
+{ buildPythonPackage, fetchPypi, lib, cython, jq }:
+
+buildPythonPackage rec {
+  pname = "jq";
+  version = "0.1.6";
+
+  srcs = fetchPypi {
+    inherit pname version;
+    sha256 = "34bdf9f9e49e522e1790afc03f3584c6b57329215ea0567fb2157867d6d6f602";
+  };
+  patches = [ ./jq-py-setup.patch ];
+
+  nativeBuildInputs = [ cython ];
+
+  preBuild = ''
+    cython jq.pyx
+  '';
+
+  buildInputs = [ jq ];
+
+  meta = {
+    description = "Python bindings for jq, the flexible JSON processor";
+    homepage = "https://github.com/mwilliamson/jq.py";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ benley ];
+  };
+}
diff --git a/pkgs/development/python-modules/jq/jq-py-setup.patch b/pkgs/development/python-modules/jq/jq-py-setup.patch
new file mode 100644
index 000000000000..7d7d825e9f18
--- /dev/null
+++ b/pkgs/development/python-modules/jq/jq-py-setup.patch
@@ -0,0 +1,130 @@
+From 3f369cf8b9f7134d0792f6b141d39b5342a8274f Mon Sep 17 00:00:00 2001
+From: Benjamin Staffin <benley@gmail.com>
+Date: Mon, 14 Jan 2019 17:27:06 -0500
+Subject: [PATCH] Vastly simplify setup.py for distro compatibility
+
+---
+ setup.py | 81 +-------------------------------------------------------
+ 1 file changed, 1 insertion(+), 80 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 77933f2..2b71e25 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,10 +1,6 @@
+ #!/usr/bin/env python
+ 
+ import os
+-import platform
+-import subprocess
+-import tarfile
+-import shutil
+ 
+ try:
+     import sysconfig
+@@ -14,88 +10,15 @@ except ImportError:
+ 
+ from setuptools import setup
+ from distutils.extension import Extension
+-from distutils.command.build_ext import build_ext
+-
+-try:
+-    from urllib import urlretrieve
+-except ImportError:
+-    from urllib.request import urlretrieve
+-
+-def path_in_dir(relative_path):
+-    return os.path.abspath(os.path.join(os.path.dirname(__file__), relative_path))
+ 
+ def read(fname):
+     return open(os.path.join(os.path.dirname(__file__), fname)).read()
+ 
+ 
+-jq_lib_tarball_path = path_in_dir("_jq-lib-1.5.tar.gz")
+-jq_lib_dir = path_in_dir("jq-jq-1.5")
+-
+-oniguruma_lib_tarball_path = path_in_dir("_onig-5.9.6.tar.gz")
+-oniguruma_lib_build_dir = path_in_dir("onig-5.9.6")
+-oniguruma_lib_install_dir = path_in_dir("onig-install-5.9.6")
+-
+-class jq_build_ext(build_ext):
+-    def run(self):
+-        self._build_oniguruma()
+-        self._build_libjq()
+-        build_ext.run(self)
+-    
+-    def _build_oniguruma(self):
+-        self._build_lib(
+-            source_url="https://github.com/kkos/oniguruma/releases/download/v5.9.6/onig-5.9.6.tar.gz",
+-            tarball_path=oniguruma_lib_tarball_path,
+-            lib_dir=oniguruma_lib_build_dir,
+-            commands=[
+-                ["./configure", "CFLAGS=-fPIC", "--prefix=" + oniguruma_lib_install_dir],
+-                ["make"],
+-                ["make", "install"],
+-            ])
+-        
+-    
+-    def _build_libjq(self):
+-        self._build_lib(
+-            source_url="https://github.com/stedolan/jq/archive/jq-1.5.tar.gz",
+-            tarball_path=jq_lib_tarball_path,
+-            lib_dir=jq_lib_dir,
+-            commands=[
+-                ["autoreconf", "-i"],
+-                ["./configure", "CFLAGS=-fPIC", "--disable-maintainer-mode", "--with-oniguruma=" + oniguruma_lib_install_dir],
+-                ["make"],
+-            ])
+-        
+-    def _build_lib(self, source_url, tarball_path, lib_dir, commands):
+-        self._download_tarball(source_url, tarball_path)
+-
+-        macosx_deployment_target = sysconfig.get_config_var("MACOSX_DEPLOYMENT_TARGET")
+-        if macosx_deployment_target:
+-            os.environ['MACOSX_DEPLOYMENT_TARGET'] = macosx_deployment_target
+-
+-        def run_command(args):
+-            print("Executing: %s" % ' '.join(args))
+-            subprocess.check_call(args, cwd=lib_dir)
+-            
+-        for command in commands:
+-            run_command(command)
+-    
+-    def _download_tarball(self, source_url, tarball_path):
+-        if os.path.exists(tarball_path):
+-            os.unlink(tarball_path)
+-        urlretrieve(source_url, tarball_path)
+-        
+-        if os.path.exists(jq_lib_dir):
+-            shutil.rmtree(jq_lib_dir)
+-        tarfile.open(tarball_path, "r:gz").extractall(path_in_dir("."))
+-
+-
+ jq_extension = Extension(
+     "jq",
+     sources=["jq.c"],
+-    include_dirs=[jq_lib_dir],
+-    extra_objects=[
+-        os.path.join(jq_lib_dir, ".libs/libjq.a"),
+-        os.path.join(oniguruma_lib_install_dir, "lib/libonig.a"),
+-    ],
++    libraries=["jq"],
+ )
+ 
+ setup(
+@@ -107,7 +30,6 @@ setup(
+     url='http://github.com/mwilliamson/jq.py',
+     license='BSD 2-Clause',
+     ext_modules = [jq_extension],
+-    cmdclass={"build_ext": jq_build_ext},
+     classifiers=[
+         'Development Status :: 4 - Beta',
+         'Intended Audience :: Developers',
+@@ -123,4 +45,3 @@ setup(
+         'Programming Language :: Python :: 3.5',
+     ],
+ )
+-
+-- 
+2.19.2
+
diff --git a/pkgs/development/python-modules/jsonrpclib-pelix/default.nix b/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
index 5e6d6ceab9b0..4697fb0c1133 100644
--- a/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
+++ b/pkgs/development/python-modules/jsonrpclib-pelix/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "jsonrpclib-pelix";
-  version = "0.3.2";
+  version = "0.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "14d288d1b3d3273cf96a729dd21a2470851c4962be8509f3dd62f0137ff90339";
+    sha256 = "1pimyq95w99ik5av96j0n9i6n12mr9kk0y28jnrq0555d7hmii8r";
   };
 
   doCheck = false; # test_suite="tests" in setup.py but no tests in pypi.
diff --git a/pkgs/development/python-modules/keyrings-alt/default.nix b/pkgs/development/python-modules/keyrings-alt/default.nix
index 9564e4f37033..beccc2f06b89 100644
--- a/pkgs/development/python-modules/keyrings-alt/default.nix
+++ b/pkgs/development/python-modules/keyrings-alt/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "keyrings.alt";
-  version = "3.1";
+  version = "3.1.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0nnva8g03dv6gdhjk1ihn2qw7g15232fyj8shipah9whgfv8d75m";
+    sha256 = "0lgp2d3hrpvbb2rfz18vrv5lrck72k3l2f2cpkbks2kigrfbgiqb";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/logzero/default.nix b/pkgs/development/python-modules/logzero/default.nix
new file mode 100644
index 000000000000..098d9f3e06d8
--- /dev/null
+++ b/pkgs/development/python-modules/logzero/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest }:
+
+buildPythonPackage rec {
+  pname = "logzero";
+  version = "1.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0hli2wgwxxackrk1ybmlpdd0rzms6blm11zzwlvrzykd8cp1xyil";
+  };
+
+  checkInputs = [ pytest ];
+  checkPhase = ''
+    pytest
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/metachris/logzero;
+    description = "Robust and effective logging for Python 2 and 3";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/mrbob/default.nix b/pkgs/development/python-modules/mrbob/default.nix
index 6dbfa1fae603..388e0148d0a0 100644
--- a/pkgs/development/python-modules/mrbob/default.nix
+++ b/pkgs/development/python-modules/mrbob/default.nix
@@ -1,4 +1,4 @@
-{ buildPythonPackage, stdenv, glibcLocales, mock, nose, isPy3k, argparse, jinja2, six
+{ buildPythonPackage, stdenv, glibcLocales, mock, nose, isPy3k, jinja2, six
 , fetchPypi
 }:
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     LC_ALL="en_US.UTF-8" nosetests
   '';
 
-  propagatedBuildInputs = [ argparse jinja2 six ];
+  propagatedBuildInputs = [ jinja2 six ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/domenkozar/mr.bob;
diff --git a/pkgs/development/python-modules/mysql-connector/default.nix b/pkgs/development/python-modules/mysql-connector/default.nix
index 579fc4631f66..2c0a83c62e3e 100644
--- a/pkgs/development/python-modules/mysql-connector/default.nix
+++ b/pkgs/development/python-modules/mysql-connector/default.nix
@@ -4,13 +4,13 @@
 
 buildPythonPackage rec {
   pname = "mysql-connector";
-  version = "8.0.13";
+  version = "8.0.14";
 
   src = fetchFromGitHub {
     owner = "mysql";
     repo = "mysql-connector-python";
     rev = version;
-    sha256 = "1qb6m3cp6zxmr49bp6g5g5b75yszgac1h26i2hza61mrvd235688";
+    sha256 = "1cf0ic2mx339j62579xjlaw5q5sz61dac379c7lsy3ln3krsw3y9";
   };
 
   propagatedBuildInputs = [ protobuf ];
diff --git a/pkgs/development/python-modules/nanomsg-python/default.nix b/pkgs/development/python-modules/nanomsg-python/default.nix
new file mode 100644
index 000000000000..b6e323ff9c69
--- /dev/null
+++ b/pkgs/development/python-modules/nanomsg-python/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, nanomsg }:
+
+buildPythonPackage rec {
+  pname = "nanomsg-python";
+  version = "1.0.20190114";
+
+  src = fetchFromGitHub {
+    owner = "tonysimpson";
+    repo = "nanomsg-python";
+    rev = "3acd9160f90f91034d4a43ce603aaa19fbaf1f2e";
+    sha256 = "1qgybcpmm9xxrn39alcgdcpvwphgm1glkbnwx0ljpz4nd1jsnyrl";
+  };
+
+  buildInputs = [ nanomsg ];
+
+  # Tests requires network connections
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Bindings for nanomsg";
+    homepage = https://github.com/tonysimpson/nanomsg-python;
+    license = licenses.mit;
+    maintainers = with maintainers; [ bgamari ];
+  };
+}
diff --git a/pkgs/development/python-modules/nanotime/default.nix b/pkgs/development/python-modules/nanotime/default.nix
new file mode 100644
index 000000000000..8dd520a04e9a
--- /dev/null
+++ b/pkgs/development/python-modules/nanotime/default.nix
@@ -0,0 +1,27 @@
+{ lib, buildPythonPackage, fetchPypi, nose }:
+
+buildPythonPackage rec {
+  pname = "nanotime";
+  version = "0.5.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "c7cc231fc5f6db401b448d7ab51c96d0a4733f4b69fabe569a576f89ffdf966b";
+  };
+
+  checkInputs = [ nose ];
+
+  checkPhase = ''
+    nosetests
+  '';
+
+  # tests currently fail
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Provides a time object that keeps time as the number of nanoseconds since the UNIX epoch";
+    homepage = https://github.com/jbenet/nanotime/tree/master/python;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cmcdragonkai ];
+  };
+}
diff --git a/pkgs/development/python-modules/nuitka/default.nix b/pkgs/development/python-modules/nuitka/default.nix
index 1b14657d5061..7d7f7da753e1 100644
--- a/pkgs/development/python-modules/nuitka/default.nix
+++ b/pkgs/development/python-modules/nuitka/default.nix
@@ -13,13 +13,13 @@ let
   # Therefore we create a separate env for it.
   scons = pkgs.python27.withPackages(ps: [ pkgs.scons ]);
 in buildPythonPackage rec {
-  version = "0.6.0.6";
+  version = "0.6.1";
   pname = "Nuitka";
 
   # Latest version is not yet on PyPi
   src = fetchurl {
     url = "https://github.com/kayhayen/Nuitka/archive/${version}.tar.gz";
-    sha256 = "1i5p4ia4qcqmfb9k90g3ssbr090q555fdpc32sl4x6rgqfw5ddj4";
+    sha256 = "0ncclbj9qdd88fs26mvgf217m7kgfcy1zgsyzi1j65b6z2wywl9a";
   };
 
   checkInputs = [ vmprof pyqt4 ];
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index c183442e0e9e..41aa7f7a0c8a 100644
--- a/pkgs/development/python-modules/numba/default.nix
+++ b/pkgs/development/python-modules/numba/default.nix
@@ -7,7 +7,6 @@
 , isPy3k
 , numpy
 , llvmlite
-, argparse
 , funcsigs
 , singledispatch
 , libcxx
@@ -24,7 +23,7 @@ buildPythonPackage rec {
 
   NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
 
-  propagatedBuildInputs = [numpy llvmlite argparse] ++ stdenv.lib.optional (!isPy3k) funcsigs ++ stdenv.lib.optional (isPy27 || isPy33) singledispatch;
+  propagatedBuildInputs = [numpy llvmlite] ++ stdenv.lib.optional (!isPy3k) funcsigs ++ stdenv.lib.optional (isPy27 || isPy33) singledispatch;
 
   # Copy test script into $out and run the test suite.
   checkPhase = ''
diff --git a/pkgs/development/python-modules/obfsproxy/default.nix b/pkgs/development/python-modules/obfsproxy/default.nix
index 2f435201d21d..8abd3f22ea3d 100644
--- a/pkgs/development/python-modules/obfsproxy/default.nix
+++ b/pkgs/development/python-modules/obfsproxy/default.nix
@@ -2,7 +2,6 @@
 , buildPythonPackage
 , fetchgit
 , pyptlib
-, argparse
 , twisted
 , pycrypto
 , pyyaml
@@ -23,7 +22,7 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "argparse" ""
   '';
 
-  propagatedBuildInputs = [ pyptlib argparse twisted pycrypto pyyaml ];
+  propagatedBuildInputs = [ pyptlib twisted pycrypto pyyaml ];
 
   # No tests in archive
   doCheck = false;
diff --git a/pkgs/development/python-modules/pandas/0.17.1.nix b/pkgs/development/python-modules/pandas/0.17.1.nix
deleted file mode 100644
index c481aa0dfea7..000000000000
--- a/pkgs/development/python-modules/pandas/0.17.1.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ buildPythonPackage
-, fetchPypi
-, stdenv
-, pytest
-, glibcLocales
-, cython
-, dateutil
-, scipy
-, numexpr
-, pytz
-, xlrd
-, bottleneck
-, sqlalchemy
-, lxml
-, html5lib
-, beautifulsoup4
-, openpyxl
-, tables
-, xlwt
-, libcxx ? null
-}:
-
-let
-  inherit (stdenv.lib) optional optionalString;
-  inherit (stdenv) isDarwin;
-in buildPythonPackage rec {
-  pname = "pandas";
-  version = "0.17.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "cfd7214a7223703fe6999fbe34837749540efee1c985e6aee9933f30e3f72837";
-  };
-
-  LC_ALL = "en_US.UTF-8";
-  buildInputs = [ pytest glibcLocales ] ++ optional isDarwin libcxx;
-  propagatedBuildInputs = [
-    cython
-    dateutil
-    scipy
-    numexpr
-    pytz
-    xlrd
-    bottleneck
-    sqlalchemy
-    lxml
-    html5lib
-    beautifulsoup4
-    openpyxl
-    tables
-    xlwt
-  ];
-
-  doCheck = false;
-
-  # For OSX, we need to add a dependency on libcxx, which provides
-  # `complex.h` and other libraries that pandas depends on to build.
-  postPatch = optionalString isDarwin ''
-    cpp_sdk="${libcxx}/include/c++/v1";
-    echo "Adding $cpp_sdk to the setup.py common_include variable"
-    substituteInPlace setup.py \
-      --replace "['pandas/src/klib', 'pandas/src']" \
-                "['pandas/src/klib', 'pandas/src', '$cpp_sdk']"
-  '';
-
-  meta = {
-    # https://github.com/pandas-dev/pandas/issues/14866
-    # pandas devs are no longer testing i686 so safer to assume it's broken
-    broken = stdenv.isi686;
-    homepage = http://pandas.pydata.org/;
-    description = "Python Data Analysis Library";
-    license = stdenv.lib.licenses.bsd3;
-    maintainers = with stdenv.lib.maintainers; [ shlevy ];
-    platforms = stdenv.lib.platforms.unix;
-  };
-}
diff --git a/pkgs/development/python-modules/paste/default.nix b/pkgs/development/python-modules/paste/default.nix
index d235bda40e4c..01acbf169637 100644
--- a/pkgs/development/python-modules/paste/default.nix
+++ b/pkgs/development/python-modules/paste/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "paste";
-  version = "3.0.5";
+  version = "3.0.6";
 
   src = fetchPypi {
     pname = "Paste";
     inherit version;
-    sha256 = "1bb2068807ce3592d313ce9b1a25a7ac842a504e7e3b005027193d17a043d1a8";
+    sha256 = "14lbi9asn5agsdf7r97prkjpz7amgmp529lbvfhf0nv881xczah6";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/pastescript/default.nix b/pkgs/development/python-modules/pastescript/default.nix
index 3507729ee94e..ac85b4be1200 100644
--- a/pkgs/development/python-modules/pastescript/default.nix
+++ b/pkgs/development/python-modules/pastescript/default.nix
@@ -6,7 +6,6 @@
 , paste
 , PasteDeploy
 , cheetah
-, argparse
 }:
 
 buildPythonPackage rec {
@@ -19,7 +18,7 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ nose ];
-  propagatedBuildInputs = [ six paste PasteDeploy cheetah argparse ];
+  propagatedBuildInputs = [ six paste PasteDeploy cheetah ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/peewee/default.nix b/pkgs/development/python-modules/peewee/default.nix
index a18168eaa5aa..abaed3cbffe4 100644
--- a/pkgs/development/python-modules/peewee/default.nix
+++ b/pkgs/development/python-modules/peewee/default.nix
@@ -10,14 +10,14 @@
 buildPythonPackage rec {
 
   pname = "peewee";
-  version = "3.8.0";
+  version = "3.8.1";
 
   # pypi release does not provide tests
   src = fetchFromGitHub {
     owner = "coleifer";
     repo = pname;
     rev = version;
-    sha256 = "0kqhpalw1587zaz3fcj13mpzs5950l6fm3qlcfqsfp16h8w0s89f";
+    sha256 = "0z6fdihmvqfg0ysa94g4w2w7146fsi2gnrgh90b4i1s3wj8iaxqy";
   };
 
 
diff --git a/pkgs/development/python-modules/perf/default.nix b/pkgs/development/python-modules/perf/default.nix
index 558886ce6228..6c209ba8da02 100644
--- a/pkgs/development/python-modules/perf/default.nix
+++ b/pkgs/development/python-modules/perf/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "perf";
-  version = "1.5.1";
+  version = "1.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5aae76e58bd3edd0c50adcc7c16926ebb9ed8c0e5058b435a30d58c6bb0394a8";
+    sha256 = "1vrv83v8rhyl51yaxlqzw567vz5a9qwkymk3vqvcl5sa2yd3mzgp";
   };
 
   checkInputs = [ nose psutil ] ++
diff --git a/pkgs/development/python-modules/pprintpp/default.nix b/pkgs/development/python-modules/pprintpp/default.nix
new file mode 100644
index 000000000000..daf9d0062fb2
--- /dev/null
+++ b/pkgs/development/python-modules/pprintpp/default.nix
@@ -0,0 +1,30 @@
+{ lib, fetchpatch, buildPythonPackage, fetchPypi, python, nose, parameterized }:
+
+buildPythonPackage rec {
+  pname = "pprintpp";
+  version = "0.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "00v4pkyiqc0y9qjnp3br58a4k5zwqdrjjxbcsv39vx67w84630pa";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/wolever/pprintpp/commit/873217674cc824b4c1cfdad4867c560c60e8d806.patch";
+      sha256 = "0rqxzxawr83215s84mfzh1gnjwjm2xv399ywwcl4q7h395av5vb3";
+    })
+  ];
+
+  checkInputs = [ nose parameterized ];
+  checkPhase = ''
+    ${python.interpreter} test.py
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/wolever/pprintpp;
+    description = "A drop-in replacement for pprint that's actually pretty";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/progressbar2/default.nix b/pkgs/development/python-modules/progressbar2/default.nix
index 18fb14c3aa9a..362e73c0d71e 100644
--- a/pkgs/development/python-modules/progressbar2/default.nix
+++ b/pkgs/development/python-modules/progressbar2/default.nix
@@ -1,39 +1,38 @@
 { stdenv
 , python
 , buildPythonPackage
-, fetchFromGitHub
+, fetchPypi
 , pytest
 , python-utils
 , sphinx
-, coverage
-, execnet
 , flake8
 , pytestpep8
 , pytestflakes
 , pytestcov
 , pytestcache
-, pep8
 , pytestrunner
+, freezegun
 }:
 
 buildPythonPackage rec {
   pname = "progressbar2";
-  version = "3.12.0";
+  version = "3.39.2";
 
-  # Use source from GitHub, PyPI is missing tests
-  # https://github.com/WoLpH/python-progressbar/issues/151
-  src = fetchFromGitHub {
-    owner = "WoLpH";
-    repo = "python-progressbar";
-    rev = "v${version}";
-    sha256 = "1gk45sh8cd0kkyvzcvx95z6nlblmyx0x189mjfv3vfa43cr1mb0f";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6eb5135b987caca4212d2c7abc2923d4ad5ba18bb34ccbe7044b3628f52efc2c";
   };
 
+  postPatch = ''
+    rm -r tests/__pycache__
+    rm tests/*.pyc
+  '';
+
   propagatedBuildInputs = [ python-utils ];
   nativeBuildInputs = [ pytestrunner ];
   checkInputs = [
-    pytest sphinx coverage execnet flake8 pytestpep8 pytestflakes pytestcov
-    pytestcache pep8
+    pytest sphinx flake8 pytestpep8 pytestflakes pytestcov
+    pytestcache freezegun
   ];
   # ignore tests on the nix wrapped setup.py and don't flake .eggs directory
   checkPhase = ''
diff --git a/pkgs/development/python-modules/pyaxmlparser/default.nix b/pkgs/development/python-modules/pyaxmlparser/default.nix
index 0721c0d449c7..c5be26bd9b73 100644
--- a/pkgs/development/python-modules/pyaxmlparser/default.nix
+++ b/pkgs/development/python-modules/pyaxmlparser/default.nix
@@ -28,7 +28,8 @@ buildPythonPackage rec {
   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;
+    # Files from Androguard are licensed ASL 2.0
+    license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ ma27 ];
   };
 }
diff --git a/pkgs/development/python-modules/pychromecast/default.nix b/pkgs/development/python-modules/pychromecast/default.nix
index 2494407766c7..bda05a58e150 100644
--- a/pkgs/development/python-modules/pychromecast/default.nix
+++ b/pkgs/development/python-modules/pychromecast/default.nix
@@ -1,19 +1,20 @@
-{ lib, fetchurl, buildPythonPackage, requests, six, zeroconf, protobuf, casttube }:
+{ lib, fetchPypi, buildPythonPackage, requests, zeroconf, protobuf, casttube, isPy3k }:
 
 buildPythonPackage rec {
   pname = "PyChromecast";
-  version = "2.3.0";
-  name = pname + "-" + version;
+  version = "2.4.0";
 
-  src = fetchurl {
-    url    = "mirror://pypi/p/pychromecast/${name}.tar.gz";
-    sha256 = "f385168e34d2ef47f976c8e41bad2f58f5ca004634c0ccb1a12623d8beb2fa38";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0q012ghssk2xhm17v28sc2lv62vk7wd5p7zzdbgxk6kywfx8yvm2";
   };
 
-  propagatedBuildInputs = [ requests six zeroconf protobuf casttube ];
+  disabled = !isPy3k;
+
+  propagatedBuildInputs = [ requests zeroconf protobuf casttube ];
 
   meta = with lib; {
-    description = "Library for Python 2 and 3 to communicate with the Google Chromecast";
+    description = "Library for Python 3.4+ to communicate with the Google Chromecast";
     homepage    = https://github.com/balloob/pychromecast;
     license     = licenses.mit;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/development/python-modules/pygame/git.nix b/pkgs/development/python-modules/pygame/git.nix
deleted file mode 100644
index 1d8ba697f38b..000000000000
--- a/pkgs/development/python-modules/pygame/git.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, lib, fetchFromBitbucket, buildPythonPackage, python, smpeg, libX11
-, SDL, SDL_image, SDL_mixer, SDL_ttf, libpng, libjpeg, portmidi
-}:
-
-buildPythonPackage rec {
-  pname = "pygame";
-  version = "2016-05-17";
-  name = pname + "-" + version;
-
-  src = fetchFromBitbucket {
-    owner = "pygame";
-    repo = "pygame";
-    rev = "575c7a74d85a37db7c645421c02cf0b6b78a889f";
-    sha256 = "1i5xqmw93kfidcji2wacgkm5y4mcnbksy8iimih0729k19rbhznc";
-  };
-
-  buildInputs = [
-    SDL SDL_image SDL_mixer SDL_ttf libpng libjpeg
-    smpeg portmidi libX11
-  ];
-
-  # Tests fail because of no audio device and display.
-  doCheck = false;
-
-  preConfigure = ''
-    sed \
-      -e "s/^origincdirs = .*/origincdirs = []/" \
-      -e "s/^origlibdirs = .*/origlibdirs = []/" \
-      -i config_unix.py
-    ${lib.concatMapStrings (dep: ''
-      sed \
-        -e "/^origincdirs =/aorigincdirs += ['${lib.getDev dep}/include']" \
-        -e "/^origlibdirs =/aoriglibdirs += ['${lib.getLib dep}/lib']" \
-        -i config_unix.py
-      '') buildInputs
-    }
-    LOCALBASE=/ ${python.interpreter} config.py
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Python library for games";
-    homepage = http://www.pygame.org/;
-    license = licenses.lgpl21Plus;
-    platforms = platforms.linux;
-    broken = true;
-  };
-}
diff --git a/pkgs/development/python-modules/pymongo/2_9_1.nix b/pkgs/development/python-modules/pymongo/2_9_1.nix
deleted file mode 100644
index 8e0b0858754d..000000000000
--- a/pkgs/development/python-modules/pymongo/2_9_1.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-}:
-
-buildPythonPackage rec {
-  pname = "pymongo";
-  version = "2.9.5";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "912516ac6a355d7624374a38337b8587afe3eb535c0a5456b3bd12df637a6e70";
-  };
-
-  # Tests call a running mongodb instance
-  doCheck = false;
-
-  meta = with stdenv.lib; {
-    homepage = https://github.com/mongodb/mongo-python-driver;
-    license = licenses.asl20;
-    description = "Python driver for MongoDB ";
-  };
-
-}
diff --git a/pkgs/development/python-modules/pymongo/default.nix b/pkgs/development/python-modules/pymongo/default.nix
index 392a0ec580fe..792b8b1bd5b4 100644
--- a/pkgs/development/python-modules/pymongo/default.nix
+++ b/pkgs/development/python-modules/pymongo/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, buildPythonPackage, fetchPypi }:
+{ lib, buildPythonPackage, fetchPypi }:
 
 buildPythonPackage rec {
   pname = "pymongo";
   version = "3.7.2";
-  name  = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "8c74e2a9b594f7962c62cef7680a4cb92a96b4e6e3c2f970790da67cc0213a7e";
   };
 
+  # Tests call a running mongodb instance
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = https://github.com/mongodb/mongo-python-driver;
     license = licenses.asl20;
-    description = "Python driver for MongoDB ";
+    description = "Python driver for MongoDB";
   };
 }
diff --git a/pkgs/development/python-modules/pyrsistent/default.nix b/pkgs/development/python-modules/pyrsistent/default.nix
index ceb0d718a403..e916c907e4f1 100644
--- a/pkgs/development/python-modules/pyrsistent/default.nix
+++ b/pkgs/development/python-modules/pyrsistent/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "pyrsistent";
-  version = "0.14.6";
+  version = "0.14.9";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5a31f6b093da3401fefdeb53a0980e3145bb9d2bf852b579cc7b39c7f0016c87";
+    sha256 = "0xwaqjjn665wd1rllqzndmlc8yzfw2wxakpfwlh6ir6kgbajff2s";
   };
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/pyshp/default.nix b/pkgs/development/python-modules/pyshp/default.nix
index b9c5fb4583fa..b58e1f48bb80 100644
--- a/pkgs/development/python-modules/pyshp/default.nix
+++ b/pkgs/development/python-modules/pyshp/default.nix
@@ -2,12 +2,12 @@
 , setuptools }:
 
 buildPythonPackage rec {
-  version = "2.0.0";
+  version = "2.0.1";
   pname = "pyshp";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0l5a28878vplwclqvjj7v0xx6zlr03ia1dkq5hc3mxf05bahiwyz";
+    sha256 = "049xj760s75nkvs7rhz710a6x3lvvfajddknmfz1vkf2p3f2l2as";
   };
 
   buildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/pytest-benchmark/default.nix b/pkgs/development/python-modules/pytest-benchmark/default.nix
index 0f3475f715d0..0a361627e8e9 100644
--- a/pkgs/development/python-modules/pytest-benchmark/default.nix
+++ b/pkgs/development/python-modules/pytest-benchmark/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "pytest-benchmark";
-  version = "3.1.1";
+  version = "3.2.2";
 
   src = fetchFromGitHub {
     owner = "ionelmc";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1ch079dlc6c9ag74dh4dg6plkmh0h8kn78ari3fgadc75bald71m";
+    sha256 = "1hslzzinpwc1zqhbpllqh3sllmiyk69pcycl7ahr0rz3micgwczj";
   };
 
   propagatedBuildInputs = [ pytest py-cpuinfo ] ++ lib.optional (pythonOlder "3.4") [ pathlib statistics ];
diff --git a/pkgs/development/python-modules/pytest-django/default.nix b/pkgs/development/python-modules/pytest-django/default.nix
index 0c53d3ceb9c6..35b2ac34cabc 100644
--- a/pkgs/development/python-modules/pytest-django/default.nix
+++ b/pkgs/development/python-modules/pytest-django/default.nix
@@ -10,11 +10,11 @@
 }:
 buildPythonPackage rec {
   pname = "pytest-django";
-  version = "3.4.4";
+  version = "3.4.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07zl2438gavrcykva6i2lpxmzgf90h4xlm3nqgd7wsqz2yh727zy";
+    sha256 = "0dh7jm1d37p54pgc7cx4izz6khsd860a6hw64gx74c8fjfz36p8s";
   };
 
   buildInputs = [ pytest setuptools_scm ];
diff --git a/pkgs/development/python-modules/pytest/default.nix b/pkgs/development/python-modules/pytest/default.nix
index dc928130cbb1..9412a750a9ab 100644
--- a/pkgs/development/python-modules/pytest/default.nix
+++ b/pkgs/development/python-modules/pytest/default.nix
@@ -2,59 +2,46 @@
 , setuptools_scm, setuptools, six, pluggy, funcsigs, isPy3k, more-itertools
 , atomicwrites, mock, writeText, pathlib2
 }:
+buildPythonPackage rec {
+  version = "3.9.3";
+  pname = "pytest";
 
-let generic = { version, sha256 }:
-  buildPythonPackage rec {
-    pname = "pytest";
-    inherit version;
+  preCheck = ''
+    # don't test bash builtins
+    rm testing/test_argcomplete.py
+  '';
 
-    preCheck = ''
-      # don't test bash builtins
-      rm testing/test_argcomplete.py
-    '';
-
-    src = fetchPypi {
-      inherit pname version sha256;
-    };
-
-    checkInputs = [ hypothesis mock ];
-    buildInputs = [ setuptools_scm ];
-    propagatedBuildInputs = [ attrs py setuptools six pluggy more-itertools atomicwrites]
-      ++ stdenv.lib.optionals (!isPy3k) [ funcsigs ]
-      ++ stdenv.lib.optionals (pythonOlder "3.6") [ pathlib2 ];
-
-    checkPhase = ''
-      runHook preCheck
-      $out/bin/py.test -x testing/
-      runHook postCheck
-    '';
-
-    # Remove .pytest_cache when using py.test in a Nix build
-    setupHook = writeText "pytest-hook" ''
-      pytestcachePhase() {
-          find $out -name .pytest_cache -type d -exec rm -rf {} +
-      }
-
-      preDistPhases+=" pytestcachePhase"
-    '';
-
-    meta = with stdenv.lib; {
-      homepage = https://docs.pytest.org;
-      description = "Framework for writing tests";
-      maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
-      license = licenses.mit;
-      platforms = platforms.unix;
-    };
-  };
-
-in {
-  pytest_39 = generic {
-    version = "3.9.3";
+  src = fetchPypi {
+    inherit pname version;
     sha256 = "a9e5e8d7ab9d5b0747f37740276eb362e6a76275d76cebbb52c6049d93b475db";
   };
 
-  pytest_37 = generic {
-    version = "3.7.4";
-    sha256 = "2d7c49e931316cc7d1638a3e5f54f5d7b4e5225972b3c9838f3584788d27f349";
+  checkInputs = [ hypothesis mock ];
+  buildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ attrs py setuptools six pluggy more-itertools atomicwrites]
+    ++ stdenv.lib.optionals (!isPy3k) [ funcsigs ]
+    ++ stdenv.lib.optionals (pythonOlder "3.6") [ pathlib2 ];
+
+  checkPhase = ''
+    runHook preCheck
+    $out/bin/py.test -x testing/
+    runHook postCheck
+  '';
+
+  # Remove .pytest_cache when using py.test in a Nix build
+  setupHook = writeText "pytest-hook" ''
+    pytestcachePhase() {
+        find $out -name .pytest_cache -type d -exec rm -rf {} +
+    }
+
+    preDistPhases+=" pytestcachePhase"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://docs.pytest.org;
+    description = "Framework for writing tests";
+    maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
+    license = licenses.mit;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/python-modules/python-gitlab/default.nix b/pkgs/development/python-modules/python-gitlab/default.nix
index 24ab69f1a0bc..8c030ec8639b 100644
--- a/pkgs/development/python-modules/python-gitlab/default.nix
+++ b/pkgs/development/python-modules/python-gitlab/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname   = "python-gitlab";
-  version = "1.6.0";
+  version = "1.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "20ceb9232f9a412ce6554056a6b5039013d0755261d57b5c8ada7035773de795";
+    sha256 = "17nh09c28vf2daamyq97bdzgr685lyh668haisqbbp5lkn9gh7j0";
   };
 
   propagatedBuildInputs = [ requests six ];
diff --git a/pkgs/development/python-modules/python-utils/default.nix b/pkgs/development/python-modules/python-utils/default.nix
index b7744ce79c3b..7aa776540061 100644
--- a/pkgs/development/python-modules/python-utils/default.nix
+++ b/pkgs/development/python-modules/python-utils/default.nix
@@ -1,29 +1,23 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest, pytestrunner, pytestcov, pytestflakes, pytestpep8, sphinx, six }:
+{ lib, buildPythonPackage, fetchPypi, pytest, pytestrunner, pytestcov, pytestflakes, pytestpep8, sphinx, six }:
 
 buildPythonPackage rec {
   pname = "python-utils";
   version = "2.3.0";
-  name = pname + "-" + version;
 
-  src = fetchFromGitHub {
-    owner = "WoLpH";
-    repo = "python-utils";
-    rev = "v${version}";
-    sha256 = "14gyphcqwa77wfbnrzj363v3fdkxy08378lgd7l3jqnpvr8pfp5c";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "34aaf26b39b0b86628008f2ae0ac001b30e7986a8d303b61e1357dfcdad4f6d3";
   };
 
-  checkInputs = [ pytest pytestrunner pytestcov pytestflakes pytestpep8 sphinx ];
-
   postPatch = ''
-    # pytest-runner is only actually required in checkPhase
-    substituteInPlace setup.py --replace "setup_requires=['pytest-runner']," ""
+    rm -r tests/__pycache__
+    rm tests/*.pyc
   '';
 
-  # Tests failing
-  doCheck = false;
+  checkInputs = [ pytest pytestrunner pytestcov pytestflakes pytestpep8 sphinx ];
 
   checkPhase = ''
-    py.test
+    py.test tests
   '';
 
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/pyutil/default.nix b/pkgs/development/python-modules/pyutil/default.nix
index 13ea7b75ae3f..b7c38c512652 100644
--- a/pkgs/development/python-modules/pyutil/default.nix
+++ b/pkgs/development/python-modules/pyutil/default.nix
@@ -5,7 +5,6 @@
 , setuptoolsTrial
 , simplejson
 , zbase32
-, argparse
 , twisted
 , isPyPy
 }:
@@ -20,7 +19,7 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ setuptoolsDarcs setuptoolsTrial ] ++ (if doCheck then [ simplejson ] else []);
-  propagatedBuildInputs = [ argparse twisted ];
+  propagatedBuildInputs = [ twisted ];
 
   # Tests fail because they try to write new code into the twisted
   # package, apparently some kind of plugin.
diff --git a/pkgs/development/python-modules/pywal/default.nix b/pkgs/development/python-modules/pywal/default.nix
index 00691e65225c..7f908c943aef 100644
--- a/pkgs/development/python-modules/pywal/default.nix
+++ b/pkgs/development/python-modules/pywal/default.nix
@@ -1,10 +1,10 @@
-{ lib, python3Packages, imagemagick, feh }:
+{ lib, buildPythonPackage, fetchPypi, imagemagick, feh, isPy3k }:
 
-python3Packages.buildPythonApplication rec {
+buildPythonPackage rec {
   pname = "pywal";
   version = "3.2.1";
 
-  src = python3Packages.fetchPypi {
+  src = fetchPypi {
     inherit pname version;
     sha256 = "1pj30h19ijwhmbm941yzbkgr19q06dhp9492h9nrqw1wfjfdbdic";
   };
@@ -19,6 +19,9 @@ python3Packages.buildPythonApplication rec {
     ./feh.patch
   ];
 
+  # Invalid syntax
+  disabled = !isPy3k;
+
   postPatch = ''
     substituteInPlace pywal/backends/wal.py --subst-var-by convert "${imagemagick}/bin/convert"
     substituteInPlace pywal/wallpaper.py --subst-var-by feh "${feh}/bin/feh"
diff --git a/pkgs/development/python-modules/qtawesome/default.nix b/pkgs/development/python-modules/qtawesome/default.nix
index fbebabc890a0..446a86f3c8f5 100644
--- a/pkgs/development/python-modules/qtawesome/default.nix
+++ b/pkgs/development/python-modules/qtawesome/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "QtAwesome";
-  version = "0.5.3";
+  version = "0.5.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8dfd8bcac56caa6d81639fc43db673b62aeca6129f4c8e9b1da17a32c0d309fd";
+    sha256 = "0yb194c927g9nqknfb49nfqv32l74bb0m71wswijbbybb7syabbl";
   };
 
   propagatedBuildInputs = [ qtpy six pyside ];
diff --git a/pkgs/development/python-modules/recommonmark/default.nix b/pkgs/development/python-modules/recommonmark/default.nix
index 2078a04be063..f6965fd6cd93 100644
--- a/pkgs/development/python-modules/recommonmark/default.nix
+++ b/pkgs/development/python-modules/recommonmark/default.nix
@@ -1,26 +1,30 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
 , pytest
-, sphinx
-, CommonMark_54
+, CommonMark
 , docutils
+, sphinx
 }:
 
 buildPythonPackage rec {
   pname = "recommonmark";
-  version = "0.4.0";
+  version = "0.5.0";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "6e29c723abcf5533842376d87c4589e62923ecb6002a8e059eb608345ddaff9d";
+  # PyPI tarball is missing some test files: https://github.com/rtfd/recommonmark/pull/128
+  src = fetchFromGitHub {
+    owner = "rtfd";
+    repo = pname;
+    rev = version;
+    sha256 = "04bjqx2hczmg7rnj2rpsjk7h24diwk83s6fhgrxk00k40w2bpz5j";
   };
 
-  checkInputs = [ pytest sphinx ];
-  propagatedBuildInputs = [ CommonMark_54 docutils ];
+  checkInputs = [ pytest ];
+  propagatedBuildInputs = [ CommonMark docutils sphinx ];
 
-  # No tests in archive
-  doCheck = false;
+  checkPhase = ''
+    py.test
+  '';
 
   meta = {
     description = "A docutils-compatibility bridge to CommonMark";
@@ -28,4 +32,4 @@ buildPythonPackage rec {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ fridh ];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/remotecv/default.nix b/pkgs/development/python-modules/remotecv/default.nix
index 2102cf064250..a4d1dcc485ec 100644
--- a/pkgs/development/python-modules/remotecv/default.nix
+++ b/pkgs/development/python-modules/remotecv/default.nix
@@ -1,11 +1,11 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub, pillow, argparse, pyres, nose
+{ stdenv, buildPythonPackage, fetchFromGitHub, pillow, pyres, nose
 , preggy, numpy, yanc, nose-focus, mock, opencv }:
 
 buildPythonPackage rec {
   pname = "remotecv";
   version = "2.2.2";
 
-  propagatedBuildInputs = [ pillow argparse pyres ];
+  propagatedBuildInputs = [ pillow pyres ];
 
   checkInputs = [ nose preggy numpy yanc nose-focus mock opencv ];
 
diff --git a/pkgs/development/python-modules/robomachine/default.nix b/pkgs/development/python-modules/robomachine/default.nix
index f29cafb7aeed..58a767432a22 100644
--- a/pkgs/development/python-modules/robomachine/default.nix
+++ b/pkgs/development/python-modules/robomachine/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchPypi, buildPythonPackage, pyparsing, argparse, robotframework, allpairspy }:
+{ stdenv, fetchPypi, buildPythonPackage, pyparsing, robotframework, allpairspy }:
 
 buildPythonPackage rec {
   pname = "RoboMachine";
@@ -9,7 +9,7 @@ buildPythonPackage rec {
     sha256 = "242cfd9be0f7591138eaeba03c9c190f894ce045e1767ab7b90eca330259fc45";
   };
 
-  propagatedBuildInputs = [ pyparsing argparse robotframework allpairspy ];
+  propagatedBuildInputs = [ pyparsing robotframework allpairspy ];
 
   # Remove Windows .bat files
   postInstall = ''
diff --git a/pkgs/development/python-modules/sortedcollections/default.nix b/pkgs/development/python-modules/sortedcollections/default.nix
index dcb49a43413e..b8261d88628c 100644
--- a/pkgs/development/python-modules/sortedcollections/default.nix
+++ b/pkgs/development/python-modules/sortedcollections/default.nix
@@ -6,16 +6,16 @@
 
 buildPythonPackage rec {
   pname = "sortedcollections";
-  version = "1.0.1";
+  version = "1.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12q1gf81l53mv634hk259aql69k9572nfv5gsn8gxlywdly2z63b";
+    sha256 = "12nkw69lnyvh9wy6rsd0ng4bcia81vkhj1rj1kj1k3vzppn0sgmr";
   };
 
-  buildInputs = [ sortedcontainers ];
+  propagatedBuildInputs = [ sortedcontainers ];
 
-  # wants to test all python versions with tox:
+  # No tests in PyPi tarball
   doCheck = false;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/stevedore/default.nix b/pkgs/development/python-modules/stevedore/default.nix
index 8027688c9ea5..4e607799d229 100644
--- a/pkgs/development/python-modules/stevedore/default.nix
+++ b/pkgs/development/python-modules/stevedore/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, pbr, six, argparse }:
+{ stdenv, buildPythonPackage, fetchPypi, pbr, six }:
 
 buildPythonPackage rec {
   pname = "stevedore";
@@ -11,7 +11,7 @@ buildPythonPackage rec {
 
   doCheck = false;
 
-  propagatedBuildInputs = [ pbr six argparse ];
+  propagatedBuildInputs = [ pbr six ];
 
   meta = with stdenv.lib; {
     description = "Manage dynamic plugins for Python applications";
diff --git a/pkgs/development/python-modules/supervisor/default.nix b/pkgs/development/python-modules/supervisor/default.nix
index 2d2a03d37aea..4771ba7a89d1 100644
--- a/pkgs/development/python-modules/supervisor/default.nix
+++ b/pkgs/development/python-modules/supervisor/default.nix
@@ -4,11 +4,11 @@
 }:
 buildPythonPackage rec {
   pname = "supervisor";
-  version = "3.3.4";
+  version = "3.3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0wp62z9xprvz2krg02xnbwcnq6pxfq3byd8cxx8c2d8xznih28i1";
+    sha256 = "1w3ahridzbc6rxfpbyx8lij6pjlcgf2ymzyg53llkjqxalp6sk8v";
   };
 
   checkInputs = [ mock ];
diff --git a/pkgs/development/python-modules/tenacity/default.nix b/pkgs/development/python-modules/tenacity/default.nix
new file mode 100644
index 000000000000..596fa6b825fc
--- /dev/null
+++ b/pkgs/development/python-modules/tenacity/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchPypi, isPy27
+, pbr, six, futures, monotonic
+, pytest, sphinx, tornado
+}:
+
+buildPythonPackage rec {
+  pname = "tenacity";
+  version = "5.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1rjbj9wks7b7n75mbm01y0g2ngyai8yi05ck9gicmcdyix7vw42c";
+  };
+
+  nativeBuildInputs = [ pbr ];
+  propagatedBuildInputs = [ six ]
+    ++ lib.optionals isPy27 [ futures monotonic ];
+
+  checkInputs = [ pytest sphinx tornado ];
+  checkPhase = (if isPy27 then ''
+    pytest --ignore='tenacity/tests/test_asyncio.py'
+  '' else ''
+    pytest
+  '') + ''
+    sphinx-build -a -E -W -b doctest doc/source doc/build
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/jd/tenacity;
+    description = "Retrying library for Python";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jakewaksbaum ];
+  };
+}
diff --git a/pkgs/development/python-modules/trezor/default.nix b/pkgs/development/python-modules/trezor/default.nix
index 878de1875190..7808eb359326 100644
--- a/pkgs/development/python-modules/trezor/default.nix
+++ b/pkgs/development/python-modules/trezor/default.nix
@@ -1,27 +1,48 @@
-{ lib, fetchPypi, buildPythonPackage,
-  protobuf, hidapi, ecdsa, mnemonic, requests, pyblake2, click, libusb1, rlp, isPy3k
+{ lib, fetchPypi, buildPythonPackage, isPy3k, python, pytest
+, typing-extensions
+, protobuf
+, hidapi
+, ecdsa
+, mnemonic
+, requests
+, pyblake2
+, click
+, construct
+, libusb1
+, rlp
 }:
 
 buildPythonPackage rec {
   pname = "trezor";
-  version = "0.10.2";
+  version = "0.11.1";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4dba4d5c53d3ca22884d79fb4aa68905fb8353a5da5f96c734645d8cf537138d";
+    sha256 = "6043f321d856e1b45b9df0c37810264f08d065bb56cd999f61a05fe2906e9e18";
   };
 
-  propagatedBuildInputs = [ protobuf hidapi ecdsa mnemonic requests pyblake2 click libusb1 rlp ];
+  propagatedBuildInputs = [ typing-extensions protobuf hidapi ecdsa mnemonic requests pyblake2 click construct libusb1 rlp ];
 
-  # There are no actual tests: "ImportError: No module named tests"
-  doCheck = false;
+  # build requires UTF-8 locale
+  LANG = "en_US.UTF-8";
+
+  checkInputs = [
+    pytest
+  ];
+
+  # disable test_tx_api.py as it requires being online
+  checkPhase = ''
+    runHook preCheck
+    ${python.interpreter} -m pytest --pyarg trezorlib.tests.unit_tests --ignore trezorlib/tests/unit_tests/test_tx_api.py
+    runHook postCheck
+  '';
 
   meta = {
     description = "Python library for communicating with TREZOR Bitcoin Hardware Wallet";
     homepage = https://github.com/trezor/python-trezor;
     license = lib.licenses.gpl3;
-    maintainers = with lib.maintainers; [ np ];
+    maintainers = with lib.maintainers; [ np prusnak ];
   };
 }
diff --git a/pkgs/development/python-modules/trio/default.nix b/pkgs/development/python-modules/trio/default.nix
index 215f39da30b4..3e6109133bac 100644
--- a/pkgs/development/python-modules/trio/default.nix
+++ b/pkgs/development/python-modules/trio/default.nix
@@ -15,12 +15,12 @@
 
 buildPythonPackage rec {
   pname = "trio";
-  version = "0.9.0";
+  version = "0.10.0";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6d905d950dfa1db3fad6b5ef5637c221947123fd2b0e112033fecfc582318c3b";
+    sha256 = "1c1snnhjg8l87ygf5p9z2qjcq090mws5w7pr9aaiava0yqawq8yk";
   };
 
   checkInputs = [ pytest pyopenssl trustme jedi pylint ];
diff --git a/pkgs/development/python-modules/twilio/default.nix b/pkgs/development/python-modules/twilio/default.nix
index 607386ac16d8..a616df651228 100644
--- a/pkgs/development/python-modules/twilio/default.nix
+++ b/pkgs/development/python-modules/twilio/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "twilio";
-  version = "6.22.0";
+  version = "6.23.0";
   # tests not included in PyPi, so fetch from github instead
   src = fetchFromGitHub {
     owner = "twilio";
     repo = "twilio-python";
     rev = version;
-    sha256 = "1kh2hcjm1qyisqqjyjnilkyj3vv6l5flpjyqkq27pwxvc461aapp";
+    sha256 = "07fb8sklj8527aa8hi71w4iibgmcnndmnqjdcp82ff80ladn9i5y";
   };
 
   buildInputs = [ nose mock ];
diff --git a/pkgs/development/python-modules/uncompyle6/default.nix b/pkgs/development/python-modules/uncompyle6/default.nix
index 9b6059978eb1..c7edfd95ae08 100644
--- a/pkgs/development/python-modules/uncompyle6/default.nix
+++ b/pkgs/development/python-modules/uncompyle6/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "uncompyle6";
-  version = "3.2.4";
+  version = "3.2.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0lv0ks7w5bsl8bndm6ikl4yprkq2ps23y409ldlycrvlggjg44y5";
+    sha256 = "1z4489grxc06pxmfy63b6x6h54p05fhbigvrrgr1kvdciy2nvz04";
   };
 
   checkInputs = [ nose pytest hypothesis six ];
diff --git a/pkgs/development/python-modules/unittest-xml-reporting/default.nix b/pkgs/development/python-modules/unittest-xml-reporting/default.nix
index e7e559234f66..f5997b9091f3 100644
--- a/pkgs/development/python-modules/unittest-xml-reporting/default.nix
+++ b/pkgs/development/python-modules/unittest-xml-reporting/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "unittest-xml-reporting";
-  version = "2.2.0";
+  version = "2.2.1";
 
   propagatedBuildInputs = [six];
 
@@ -11,7 +11,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3ba27af788bddb4403ee72561bfd3df2deb27a926a5426aa9beeb354c59b9c44";
+    sha256 = "1cn870jgf4h0wb4bnafw527g1dj6rd3rgyjz4f64khd0zx9qs84z";
   };
   meta = with lib; {
     homepage = https://github.com/xmlrunner/unittest-xml-reporting/tree/master/;
diff --git a/pkgs/development/python-modules/vine/default.nix b/pkgs/development/python-modules/vine/default.nix
index 0e0a169d5523..08240d5c594a 100644
--- a/pkgs/development/python-modules/vine/default.nix
+++ b/pkgs/development/python-modules/vine/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "vine";
-  version = "1.1.4";
+  version = "1.2.0";
 
   disable = pythonOlder "2.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "52116d59bc45392af9fdd3b75ed98ae48a93e822cee21e5fda249105c59a7a72";
+    sha256 = "0xjz2sjbr5jrpjk411b7alkghdskhphgsqqrbi7abqfh2pli6j7f";
   };
 
   buildInputs = [ case pytest ];
diff --git a/pkgs/development/python-modules/w3lib/default.nix b/pkgs/development/python-modules/w3lib/default.nix
index 839a4738f9fe..b71bc7dc928d 100644
--- a/pkgs/development/python-modules/w3lib/default.nix
+++ b/pkgs/development/python-modules/w3lib/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "w3lib";
-  version = "1.19.0";
+  version = "1.20.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "55994787e93b411c2d659068b51b9998d9d0c05e0df188e6daf8f45836e1ea38";
+    sha256 = "1mqwlc1cr15jxr3gr8pqqh5gf0gppm2kcvdi8vid6y8wmq9bjkg5";
   };
 
   buildInputs = [ six pytest ];
diff --git a/pkgs/development/python-modules/worldengine/default.nix b/pkgs/development/python-modules/worldengine/default.nix
index 0a49c2566409..cdb60946079d 100644
--- a/pkgs/development/python-modules/worldengine/default.nix
+++ b/pkgs/development/python-modules/worldengine/default.nix
@@ -7,7 +7,6 @@
 , pyplatec
 , protobuf
 , purepng
-, argparse
 , h5py
 , gdal
 }:
@@ -35,7 +34,7 @@ buildPythonPackage rec {
   '';
 
   buildInputs = [ nose ];
-  propagatedBuildInputs = [ noise numpy pyplatec protobuf purepng argparse h5py gdal ];
+  propagatedBuildInputs = [ noise numpy pyplatec protobuf purepng h5py gdal ];
 
   prePatch = ''
     substituteInPlace setup.py \
diff --git a/pkgs/development/python-modules/yamllint/default.nix b/pkgs/development/python-modules/yamllint/default.nix
index 16bd57a83266..bfd302d27df7 100644
--- a/pkgs/development/python-modules/yamllint/default.nix
+++ b/pkgs/development/python-modules/yamllint/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "yamllint";
-  version = "1.13.0";
+  version = "1.14.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "19fznzypkxgl1i9fy4d72xp7rbk30g62rjqmcmnqf3ij46p8flj2";
+    sha256 = "0x9ansmhqvc3rj0nbhpl0jdqr5pk6qdxf7i6r4gr0hzqr50vdaf0";
   };
 
   checkInputs = [ nose ];
diff --git a/pkgs/development/python-modules/zm-py/default.nix b/pkgs/development/python-modules/zm-py/default.nix
new file mode 100644
index 000000000000..d7f212f22844
--- /dev/null
+++ b/pkgs/development/python-modules/zm-py/default.nix
@@ -0,0 +1,29 @@
+{ lib, fetchPypi, buildPythonPackage, isPy3k
+, pytest, requests }:
+
+buildPythonPackage rec {
+  pname = "zm-py";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1hq83svprd21r74palhs3xq15g34135349y4lrgr7c76i3f37j2q";
+  };
+
+  disabled = !isPy3k;
+
+  propagatedBuildInputs = [ requests ];
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    PYTHONPATH="./zoneminder:$PYTHONPATH" pytest
+  '';
+
+  meta = with lib; {
+    description = "A loose python wrapper around the ZoneMinder REST API";
+    homepage = https://github.com/rohankapoorcom/zm-py;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}