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/3to2/default.nix5
-rw-r--r--pkgs/development/python-modules/aioconsole/default.nix6
-rw-r--r--pkgs/development/python-modules/aiohttp-socks/default.nix6
-rw-r--r--pkgs/development/python-modules/apache-airflow/default.nix61
-rw-r--r--pkgs/development/python-modules/argcomplete/default.nix28
-rw-r--r--pkgs/development/python-modules/arrow/default.nix4
-rw-r--r--pkgs/development/python-modules/aws-lambda-builders/default.nix4
-rw-r--r--pkgs/development/python-modules/aws-sam-translator/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-common/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-core/default.nix6
-rw-r--r--pkgs/development/python-modules/azure-identity/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-keyvault-keys/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-keyvault-secrets/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-containerservice/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-datafactory/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-iothub/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-keyvault/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-kusto/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-monitor/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-network/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-rdbms/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-reservations/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-sql/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-storage/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-mgmt-web/default.nix4
-rw-r--r--pkgs/development/python-modules/azure-storage-file-share/default.nix4
-rw-r--r--pkgs/development/python-modules/bacpypes/default.nix31
-rw-r--r--pkgs/development/python-modules/bayespy/default.nix4
-rw-r--r--pkgs/development/python-modules/billiard/default.nix11
-rw-r--r--pkgs/development/python-modules/bravia-tv/default.nix28
-rw-r--r--pkgs/development/python-modules/buildout-nix/default.nix6
-rw-r--r--pkgs/development/python-modules/buildout/default.nix6
-rw-r--r--pkgs/development/python-modules/carbon/default.nix8
-rw-r--r--pkgs/development/python-modules/cchardet/default.nix6
-rw-r--r--pkgs/development/python-modules/celery/default.nix6
-rw-r--r--pkgs/development/python-modules/ciso8601/default.nix30
-rw-r--r--pkgs/development/python-modules/clikit/default.nix4
-rw-r--r--pkgs/development/python-modules/cufflinks/default.nix25
-rw-r--r--pkgs/development/python-modules/cvxopt/default.nix4
-rw-r--r--pkgs/development/python-modules/deap/default.nix3
-rw-r--r--pkgs/development/python-modules/dipy/default.nix68
-rw-r--r--pkgs/development/python-modules/distributed/default.nix5
-rw-r--r--pkgs/development/python-modules/django/1_8.nix32
-rw-r--r--pkgs/development/python-modules/django/2_2.nix4
-rw-r--r--pkgs/development/python-modules/doc8/default.nix10
-rw-r--r--pkgs/development/python-modules/dropbox/default.nix6
-rw-r--r--pkgs/development/python-modules/effect/default.nix9
-rw-r--r--pkgs/development/python-modules/etesync/default.nix4
-rw-r--r--pkgs/development/python-modules/faulthandler/default.nix23
-rw-r--r--pkgs/development/python-modules/faulthandler/disable-env-test.patch13
-rw-r--r--pkgs/development/python-modules/filetype/default.nix6
-rw-r--r--pkgs/development/python-modules/fiona/default.nix4
-rw-r--r--pkgs/development/python-modules/fipy/default.nix13
-rw-r--r--pkgs/development/python-modules/fire/default.nix4
-rw-r--r--pkgs/development/python-modules/flake8-future-import/default.nix25
-rw-r--r--pkgs/development/python-modules/flake8-future-import/skip-test.patch13
-rw-r--r--pkgs/development/python-modules/flask-appbuilder/default.nix21
-rw-r--r--pkgs/development/python-modules/flask-babel/default.nix4
-rw-r--r--pkgs/development/python-modules/flowlogs_reader/default.nix2
-rw-r--r--pkgs/development/python-modules/fritzconnection/default.nix33
-rw-r--r--pkgs/development/python-modules/ftputil/default.nix5
-rw-r--r--pkgs/development/python-modules/geoalchemy2/default.nix4
-rw-r--r--pkgs/development/python-modules/geopandas/default.nix7
-rw-r--r--pkgs/development/python-modules/globus-sdk/default.nix4
-rw-r--r--pkgs/development/python-modules/google-auth-oauthlib/default.nix3
-rw-r--r--pkgs/development/python-modules/google_auth/default.nix33
-rw-r--r--pkgs/development/python-modules/google_cloud_automl/default.nix11
-rw-r--r--pkgs/development/python-modules/google_cloud_bigquery/default.nix17
-rw-r--r--pkgs/development/python-modules/google_cloud_bigtable/default.nix9
-rw-r--r--pkgs/development/python-modules/google_cloud_container/default.nix9
-rw-r--r--pkgs/development/python-modules/google_cloud_core/default.nix4
-rw-r--r--pkgs/development/python-modules/google_cloud_datastore/default.nix7
-rw-r--r--pkgs/development/python-modules/google_cloud_dns/default.nix7
-rw-r--r--pkgs/development/python-modules/google_cloud_error_reporting/default.nix3
-rw-r--r--pkgs/development/python-modules/google_cloud_logging/default.nix5
-rw-r--r--pkgs/development/python-modules/google_cloud_resource_manager/default.nix7
-rw-r--r--pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix6
-rw-r--r--pkgs/development/python-modules/google_cloud_spanner/default.nix8
-rw-r--r--pkgs/development/python-modules/google_cloud_storage/default.nix9
-rw-r--r--pkgs/development/python-modules/google_cloud_translate/default.nix8
-rw-r--r--pkgs/development/python-modules/graph-tool/2.x.x.nix20
-rw-r--r--pkgs/development/python-modules/graphite-web/default.nix37
-rw-r--r--pkgs/development/python-modules/graphite-web/update-django-tagging.patch12
-rw-r--r--pkgs/development/python-modules/graphitepager/default.nix32
-rw-r--r--pkgs/development/python-modules/gspread/default.nix4
-rw-r--r--pkgs/development/python-modules/hass-nabucasa/default.nix14
-rw-r--r--pkgs/development/python-modules/httpretty/default.nix4
-rw-r--r--pkgs/development/python-modules/icalendar/default.nix4
-rw-r--r--pkgs/development/python-modules/imapclient/default.nix33
-rw-r--r--pkgs/development/python-modules/jc/default.nix4
-rw-r--r--pkgs/development/python-modules/jmespath/default.nix4
-rw-r--r--pkgs/development/python-modules/kombu/default.nix4
-rw-r--r--pkgs/development/python-modules/kubernetes/default.nix1
-rw-r--r--pkgs/development/python-modules/marshmallow-polyfield/default.nix4
-rw-r--r--pkgs/development/python-modules/mask-rcnn/default.nix52
-rw-r--r--pkgs/development/python-modules/matplotlib/default.nix2
-rw-r--r--pkgs/development/python-modules/matrix-nio/default.nix4
-rw-r--r--pkgs/development/python-modules/mayavi/default.nix6
-rw-r--r--pkgs/development/python-modules/minidb/default.nix4
-rw-r--r--pkgs/development/python-modules/mkl-service/default.nix4
-rw-r--r--pkgs/development/python-modules/mypy/default.nix4
-rw-r--r--pkgs/development/python-modules/nest-asyncio/default.nix6
-rw-r--r--pkgs/development/python-modules/nilearn/default.nix4
-rw-r--r--pkgs/development/python-modules/ntlm-auth/default.nix11
-rw-r--r--pkgs/development/python-modules/opuslib/default.nix39
-rw-r--r--pkgs/development/python-modules/opuslib/opuslib-paths.patch26
-rw-r--r--pkgs/development/python-modules/pandas/default.nix10
-rw-r--r--pkgs/development/python-modules/pastel/default.nix17
-rw-r--r--pkgs/development/python-modules/patch-ng/default.nix22
-rw-r--r--pkgs/development/python-modules/pid/default.nix6
-rw-r--r--pkgs/development/python-modules/pip-tools/default.nix5
-rw-r--r--pkgs/development/python-modules/plumbum/default.nix4
-rw-r--r--pkgs/development/python-modules/poetry/default.nix4
-rw-r--r--pkgs/development/python-modules/pproxy/default.nix45
-rw-r--r--pkgs/development/python-modules/prompt_toolkit/default.nix4
-rw-r--r--pkgs/development/python-modules/protego/default.nix30
-rw-r--r--pkgs/development/python-modules/ptpython/default.nix9
-rw-r--r--pkgs/development/python-modules/py-cpuinfo/default.nix13
-rw-r--r--pkgs/development/python-modules/pyarrow/default.nix12
-rw-r--r--pkgs/development/python-modules/pychromecast/default.nix4
-rw-r--r--pkgs/development/python-modules/pycognito/default.nix46
-rw-r--r--pkgs/development/python-modules/pyglet/default.nix3
-rw-r--r--pkgs/development/python-modules/pyhcl/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhepmc/default.nix59
-rw-r--r--pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch204
-rw-r--r--pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch20
-rw-r--r--pkgs/development/python-modules/pyicloud/default.nix4
-rw-r--r--pkgs/development/python-modules/pylint-django/default.nix4
-rw-r--r--pkgs/development/python-modules/pymavlink/default.nix4
-rw-r--r--pkgs/development/python-modules/pymetno/default.nix31
-rw-r--r--pkgs/development/python-modules/pymumble/default.nix31
-rw-r--r--pkgs/development/python-modules/pymupdf/default.nix4
-rw-r--r--pkgs/development/python-modules/pyproj/001.proj.patch105
-rw-r--r--pkgs/development/python-modules/pyproj/default.nix14
-rw-r--r--pkgs/development/python-modules/pyroute2/default.nix6
-rw-r--r--pkgs/development/python-modules/pytest-faulthandler/default.nix34
-rw-r--r--pkgs/development/python-modules/pytest-html/default.nix23
-rw-r--r--pkgs/development/python-modules/pytest-metadata/default.nix22
-rw-r--r--pkgs/development/python-modules/pytest-twisted/default.nix27
-rw-r--r--pkgs/development/python-modules/python-jose/default.nix4
-rw-r--r--pkgs/development/python-modules/python-language-server/default.nix7
-rw-r--r--pkgs/development/python-modules/python-mpv-jsonipc/default.nix4
-rw-r--r--pkgs/development/python-modules/python-stdnum/default.nix6
-rw-r--r--pkgs/development/python-modules/qdarkstyle/default.nix6
-rw-r--r--pkgs/development/python-modules/qiskit-aer/default.nix99
-rw-r--r--pkgs/development/python-modules/qiskit-ibmq-provider/default.nix65
-rw-r--r--pkgs/development/python-modules/quandl/default.nix13
-rw-r--r--pkgs/development/python-modules/rope/default.nix10
-rw-r--r--pkgs/development/python-modules/rpy2/default.nix13
-rw-r--r--pkgs/development/python-modules/rq/default.nix4
-rw-r--r--pkgs/development/python-modules/scikit-build/default.nix69
-rw-r--r--pkgs/development/python-modules/scrapy/default.nix67
-rw-r--r--pkgs/development/python-modules/seabreeze/default.nix11
-rw-r--r--pkgs/development/python-modules/sfepy/default.nix5
-rw-r--r--pkgs/development/python-modules/shodan/default.nix6
-rw-r--r--pkgs/development/python-modules/snowflake-connector-python/default.nix9
-rw-r--r--pkgs/development/python-modules/spacy/models.json60
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-openapi/default.nix6
-rw-r--r--pkgs/development/python-modules/spyder-kernels/0.x.nix72
-rw-r--r--pkgs/development/python-modules/spyder-kernels/2.nix30
-rw-r--r--pkgs/development/python-modules/spyder-kernels/default.nix4
-rw-r--r--pkgs/development/python-modules/spyder/3.nix (renamed from pkgs/development/python-modules/spyder/2.nix)4
-rw-r--r--pkgs/development/python-modules/spyder/default.nix18
-rw-r--r--pkgs/development/python-modules/sybil/default.nix29
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix3
-rw-r--r--pkgs/development/python-modules/tesserocr/default.nix4
-rw-r--r--pkgs/development/python-modules/thespian/default.nix6
-rw-r--r--pkgs/development/python-modules/trackpy/default.nix5
-rw-r--r--pkgs/development/python-modules/twisted/default.nix4
-rw-r--r--pkgs/development/python-modules/txamqp/default.nix16
-rw-r--r--pkgs/development/python-modules/uamqp/default.nix6
-rw-r--r--pkgs/development/python-modules/variants/default.nix32
-rw-r--r--pkgs/development/python-modules/waitress-django/default.nix4
-rw-r--r--pkgs/development/python-modules/wsgitools/default.nix28
-rw-r--r--pkgs/development/python-modules/xdg/default.nix34
-rw-r--r--pkgs/development/python-modules/xdis/default.nix6
-rw-r--r--pkgs/development/python-modules/xml2rfc/default.nix6
-rw-r--r--pkgs/development/python-modules/xstatic-jquery/default.nix4
-rw-r--r--pkgs/development/python-modules/z3c-checkversions/default.nix1
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix4
-rw-r--r--pkgs/development/python-modules/zetup/default.nix15
186 files changed, 1789 insertions, 1028 deletions
diff --git a/pkgs/development/python-modules/3to2/default.nix b/pkgs/development/python-modules/3to2/default.nix
index 4e6c0f9214c2d..123cf3f4741ac 100644
--- a/pkgs/development/python-modules/3to2/default.nix
+++ b/pkgs/development/python-modules/3to2/default.nix
@@ -5,11 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  pname = "3to2";
+  pname = "py3to2";
   version = "1.1.1";
 
   src = fetchPypi {
-    inherit pname version;
+    inherit version;
+    pname = "3to2";
     extension = "zip";
     sha256 = "fef50b2b881ef743f269946e1090b77567b71bb9a9ce64b7f8e699b562ff685c";
   };
diff --git a/pkgs/development/python-modules/aioconsole/default.nix b/pkgs/development/python-modules/aioconsole/default.nix
index 36a1c1b76e4ff..6e867d0b0f654 100644
--- a/pkgs/development/python-modules/aioconsole/default.nix
+++ b/pkgs/development/python-modules/aioconsole/default.nix
@@ -10,11 +10,11 @@
 # wrapped to be able to find aioconsole and any other packages.
 buildPythonPackage rec {
   pname = "aioconsole";
-  version = "0.1.15";
+  version = "0.1.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0gbl08p89959g8dqy2vainppg3kyf948xlh18p7iwk5p0mw5d3j9";
+    sha256 = "0yk4ghvg47drfvdrrcw7nk14pg4shccmyhln9d8hy1lyafcqmnd5";
   };
 
   # hardcodes a test dependency on an old version of pytest-asyncio
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "Asynchronous console and interfaces for asyncio";
-    homepage = https://github.com/vxgmichel/aioconsole;
+    homepage = "https://github.com/vxgmichel/aioconsole";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.catern ];
   };
diff --git a/pkgs/development/python-modules/aiohttp-socks/default.nix b/pkgs/development/python-modules/aiohttp-socks/default.nix
index 782238c3f8328..792db7091d07b 100644
--- a/pkgs/development/python-modules/aiohttp-socks/default.nix
+++ b/pkgs/development/python-modules/aiohttp-socks/default.nix
@@ -2,12 +2,12 @@
 
 buildPythonPackage rec {
   pname = "aiohttp-socks";
-  version = "0.3.4";
+  version = "0.3.6";
 
   src = fetchPypi {
     inherit version;
     pname = "aiohttp_socks";
-    sha256 = "1gc74a0i0slq3gn9kv3scn7c9x444z5nwjm3d14qilsgq6civsnd";
+    sha256 = "0js7p9qj5x6k8i2cby4c6mw6xrp4dy4m82f3n1l8rz00qibmj37j";
   };
 
   propagatedBuildInputs = [ aiohttp attrs ];
@@ -20,6 +20,6 @@ buildPythonPackage rec {
   meta = {
     description = "SOCKS proxy connector for aiohttp";
     license = lib.licenses.asl20;
-    homepage = https://github.com/romis2012/aiohttp-socks;
+    homepage = "https://github.com/romis2012/aiohttp-socks";
   };
 }
diff --git a/pkgs/development/python-modules/apache-airflow/default.nix b/pkgs/development/python-modules/apache-airflow/default.nix
index 049db8a648fb8..c45a73f24bfae 100644
--- a/pkgs/development/python-modules/apache-airflow/default.nix
+++ b/pkgs/development/python-modules/apache-airflow/default.nix
@@ -134,37 +134,36 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
+    substituteInPlace setup.py \
+      --replace "flask>=1.1.0, <2.0" "flask" \
+      --replace "jinja2>=2.10.1, <2.11.0" "jinja2" \
+      --replace "pandas>=0.17.1, <1.0.0" "pandas" \
+      --replace "flask-caching>=1.3.3, <1.4.0" "flask-caching" \
+      --replace "flask-appbuilder>=1.12.5, <2.0.0" "flask-appbuilder" \
+      --replace "pendulum==1.4.4" "pendulum" \
+      --replace "cached_property~=1.5" "cached_property" \
+      --replace "dill>=0.2.2, <0.3" "dill" \
+      --replace "configparser>=3.5.0, <3.6.0" "configparser" \
+      --replace "jinja2>=2.7.3, <=2.10.0" "jinja2" \
+      --replace "funcsigs==1.0.0" "funcsigs" \
+      --replace "flask-swagger==0.2.13" "flask-swagger" \
+      --replace "python-daemon>=2.1.1, <2.2" "python-daemon" \
+      --replace "alembic>=0.9, <1.0" "alembic" \
+      --replace "markdown>=2.5.2, <3.0" "markdown" \
+      --replace "future>=0.16.0, <0.17" "future" \
+      --replace "tenacity==4.12.0" "tenacity" \
+      --replace "text-unidecode==1.2" "text-unidecode" \
+      --replace "tzlocal>=1.4,<2.0.0" "tzlocal" \
+      --replace "sqlalchemy~=1.3" "sqlalchemy" \
+      --replace "gunicorn>=19.5.0, <20.0" "gunicorn" \
+      --replace "werkzeug>=0.14.1, <0.15.0" "werkzeug"
 
-   substituteInPlace setup.py \
-     --replace "flask>=1.1.0, <2.0" "flask" \
-     --replace "jinja2>=2.10.1, <2.11.0" "jinja2" \
-     --replace "pandas>=0.17.1, <1.0.0" "pandas" \
-     --replace "flask-caching>=1.3.3, <1.4.0" "flask-caching" \
-     --replace "flask-appbuilder>=1.12.5, <2.0.0" "flask-appbuilder" \
-     --replace "pendulum==1.4.4" "pendulum" \
-     --replace "cached_property~=1.5" "cached_property" \
-     --replace "dill>=0.2.2, <0.3" "dill" \
-     --replace "configparser>=3.5.0, <3.6.0" "configparser" \
-     --replace "jinja2>=2.7.3, <=2.10.0" "jinja2" \
-     --replace "funcsigs==1.0.0" "funcsigs" \
-     --replace "flask-swagger==0.2.13" "flask-swagger" \
-     --replace "python-daemon>=2.1.1, <2.2" "python-daemon" \
-     --replace "alembic>=0.9, <1.0" "alembic" \
-     --replace "markdown>=2.5.2, <3.0" "markdown" \
-     --replace "future>=0.16.0, <0.17" "future" \
-     --replace "tenacity==4.12.0" "tenacity" \
-     --replace "text-unidecode==1.2" "text-unidecode" \
-     --replace "tzlocal>=1.4,<2.0.0" "tzlocal" \
-     --replace "sqlalchemy~=1.3" "sqlalchemy" \
-     --replace "gunicorn>=19.5.0, <20.0" "gunicorn" \
-     --replace "werkzeug>=0.14.1, <0.15.0" "werkzeug"
+    # dumb-init is only needed for CI and Docker, not relevant for NixOS.
+    substituteInPlace setup.py \
+      --replace "'dumb-init>=1.2.2'," ""
 
-  # dumb-init is only needed for CI and Docker, not relevant for NixOS.
-  substituteInPlace setup.py \
-     --replace "'dumb-init>=1.2.2'," ""
-
-   substituteInPlace tests/core.py \
-     --replace "/bin/bash" "${stdenv.shell}"
+    substituteInPlace tests/core.py \
+      --replace "/bin/bash" "${stdenv.shell}"
   '';
 
   checkPhase = ''
@@ -184,8 +183,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Programmatically author, schedule and monitor data pipelines";
-    homepage = http://airflow.apache.org/;
+    homepage = "http://airflow.apache.org/";
     license = licenses.asl20;
-    maintainers = [ maintainers.costrouc maintainers.ingenieroariel ];
+    maintainers = with maintainers; [ costrouc ingenieroariel ];
   };
 }
diff --git a/pkgs/development/python-modules/argcomplete/default.nix b/pkgs/development/python-modules/argcomplete/default.nix
index 6f978778f7da1..b34b878a839c2 100644
--- a/pkgs/development/python-modules/argcomplete/default.nix
+++ b/pkgs/development/python-modules/argcomplete/default.nix
@@ -1,25 +1,37 @@
-{ buildPythonPackage, fetchPypi, lib,
-  dicttoxml, pexpect, prettytable, requests_toolbelt
+{ buildPythonPackage, fetchPypi, lib
+, dicttoxml
+, importlib-metadata
+, pexpect
+, prettytable
+, requests_toolbelt
 }:
 buildPythonPackage rec {
   pname = "argcomplete";
-  version = "1.10.3";
+  version = "1.11.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a37f522cf3b6a34abddfedb61c4546f60023b3799b22d1cd971eacdc0861530a";
+    sha256 = "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss";
   };
 
-  doCheck = false; # bash-completion test fails with "compgen: command not found".
+  doCheck = false; # meant to be ran with interactive interpreter
 
   # re-enable if we are able to make testing work
-  # buildInputs = [ coverage flake8 ];
+  # checkInputs = [ bashInteractive coverage flake8 ];
 
-  propagatedBuildInputs = [ dicttoxml pexpect prettytable requests_toolbelt ];
+  propagatedBuildInputs = [
+    dicttoxml
+    importlib-metadata
+    pexpect
+    prettytable
+    requests_toolbelt
+  ];
+
+  pythonImportsCheck = [ "argcomplete" ];
 
   meta = with lib; {
     description = "Bash tab completion for argparse";
-    homepage = https://argcomplete.readthedocs.io;
+    homepage = "https://kislyuk.github.io/argcomplete/";
     maintainers = [ maintainers.womfoo ];
     license = [ licenses.asl20 ];
   };
diff --git a/pkgs/development/python-modules/arrow/default.nix b/pkgs/development/python-modules/arrow/default.nix
index af3e4547628ae..04295dce261f7 100644
--- a/pkgs/development/python-modules/arrow/default.nix
+++ b/pkgs/development/python-modules/arrow/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "arrow";
-  version = "0.15.4";
+  version = "0.15.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e1a318a4c0b787833ae46302c02488b6eeef413c6a13324b3261ad320f21ec1e";
+    sha256 = "0yq2bld2bjxddmg9zg4ll80pb32rkki7xyhgnrqnkxy5w9jf942k";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/aws-lambda-builders/default.nix b/pkgs/development/python-modules/aws-lambda-builders/default.nix
index c15beffca80d1..b10bd6d7c1a12 100644
--- a/pkgs/development/python-modules/aws-lambda-builders/default.nix
+++ b/pkgs/development/python-modules/aws-lambda-builders/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "aws-lambda-builders";
-  version = "0.7.0";
+  version = "0.8.0";
 
   # No tests available in PyPI tarball
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "aws-lambda-builders";
     rev = "v${version}";
-    sha256 = "0g133yxh3bgvdjcpar65x5pyx2bcx0kg173rbq5iwmmpw388f47a";
+    sha256 = "1akiv92cd7ciky0aay94lh9azr73jajn0x0x6ywaf3qm5c4hyvys";
   };
 
   # Package is not compatible with Python 3.5
diff --git a/pkgs/development/python-modules/aws-sam-translator/default.nix b/pkgs/development/python-modules/aws-sam-translator/default.nix
index 846c7d9954f7c..1fdfc4d4358c8 100644
--- a/pkgs/development/python-modules/aws-sam-translator/default.nix
+++ b/pkgs/development/python-modules/aws-sam-translator/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "aws-sam-translator";
-  version = "1.20.1";
+  version = "1.21.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "17n7kajqf35g0bxqd30jpm2vq275l3b45l77lfh6r9llpkd1zxnx";
+    sha256 = "0diyqiwas9fhkj7p5hm08lvkd5h9yn9zqilwww2av04mclfk82ij";
   };
 
   # Tests are not included in the PyPI package
diff --git a/pkgs/development/python-modules/azure-common/default.nix b/pkgs/development/python-modules/azure-common/default.nix
index b842a66cd2788..abf27b5d7ef23 100644
--- a/pkgs/development/python-modules/azure-common/default.nix
+++ b/pkgs/development/python-modules/azure-common/default.nix
@@ -9,14 +9,14 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.1.24";
+  version = "1.1.25";
   pname = "azure-common";
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "184ad6a05a3089dfdc1ce07c1cbfa489bbc45b5f6f56e848cac0851e6443da21";
+    sha256 = "ce0f1013e6d0e9faebaf3188cc069f4892fc60a6ec552e3f817c1a2f92835054";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-core/default.nix b/pkgs/development/python-modules/azure-core/default.nix
index 24675200b5b12..2e87db4fb6ce6 100644
--- a/pkgs/development/python-modules/azure-core/default.nix
+++ b/pkgs/development/python-modules/azure-core/default.nix
@@ -1,6 +1,7 @@
 { lib, buildPythonPackage, fetchPypi, isPy27
 , aiodns
 , aiohttp
+, mock
 , msrest
 , pytest
 , pytestCheckHook
@@ -11,14 +12,14 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.2.2";
+  version = "1.3.0";
   pname = "azure-core";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "0bz4m6kmqymxlxf9qk6jw8v895d13rsggbgsjpsbvi9px6w15nwb";
+    sha256 = "98d03a35845fe5b6abaa32f5961214da3e16c4c82b8c601926fc5e7f3a39549e";
   };
 
   propagatedBuildInputs = [
@@ -29,6 +30,7 @@ buildPythonPackage rec {
   checkInputs = [
     aiodns
     aiohttp
+    mock
     msrest
     pytest
     pytestCheckHook
diff --git a/pkgs/development/python-modules/azure-identity/default.nix b/pkgs/development/python-modules/azure-identity/default.nix
index e4b894eca64b2..78fd740209807 100644
--- a/pkgs/development/python-modules/azure-identity/default.nix
+++ b/pkgs/development/python-modules/azure-identity/default.nix
@@ -17,13 +17,13 @@
 
 buildPythonPackage rec {
   pname = "azure-identity";
-  version = "1.1.0";
+  version = "1.3.0";
   disabled = isPy38;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1xn4nwi4vly8n3mmphv0wbdg9k55gsgmk3fdwma8rm3m3c7593hc";
+    sha256 = "17fa904e0447fd2a2dc19909379edb769b05656dbaf4863b8c4fdfb2bb54350c";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-keyvault-keys/default.nix b/pkgs/development/python-modules/azure-keyvault-keys/default.nix
index 34629e6eb48dd..de2b87ecb5c82 100644
--- a/pkgs/development/python-modules/azure-keyvault-keys/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-keys/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "azure-keyvault-keys";
-  version = "4.0.0";
+  version = "4.1.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1l1fwm8plzr5zbv02nlvs0i8ssmd88cxm5lb19i54b3scci77hiq";
+    sha256 = "f9967b4deb48e619f6c40558f69e48978779cc09c8a7fad33d536cfc41cd68f9";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-keyvault-secrets/default.nix b/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
index e2b40c29d8503..b4749711b9f20 100644
--- a/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
+++ b/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "azure-keyvault-secrets";
-  version = "4.0.0";
+  version = "4.1.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "066p4x2ixasz6qbxss2ilchl73w1kh2nc32lgh8qygl3d90059lp";
+    sha256 = "4f3bfac60e025e01dd1c1998b73649d45d706975356c0cf147174cf5a6ddf8be";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix b/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
index c535971c7bf55..2dadb1d2cb816 100644
--- a/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-cognitiveservices/default.nix
@@ -8,12 +8,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-cognitiveservices";
-  version = "5.0.0";
+  version = "6.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1m7v3rfkvmdgghrpz15fm8pvmmhi40lcwfxdm2kxh7mx01r5l906";
+    sha256 = "d03641336f4b2ec561112655c93ee80bc28d8e8daa45a57abc36169bd19c07a0";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix b/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
index 41124e448541b..20861a9efe3a6 100644
--- a/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-containerservice/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-containerservice";
-  version = "8.2.0";
+  version = "9.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "0czn781ywbwi8px54nlccsvw5s13y4wqmxhcrxkkl0y7rblqi5pr";
+    sha256 = "6f05948bbd19ceb894f46f037b77c54116183364a671e180c007b5737c8d4590";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix b/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
index 0d610eebe9c12..e7da7541dd988 100644
--- a/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-datafactory/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-datafactory";
-  version = "0.8.0";
+  version = "0.10.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "0rv3443h4f9n88ky0fkfrp6jhf7ck9w3v96q040g3c2vkkywsnwa";
+    sha256 = "48b1ec81f30f4b5f38dd17f68f0dfc968db96e0a04fdcfc99f43f80ca041f14b";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix b/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
index 789784babfb4b..c23ebfc2ce9c8 100644
--- a/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-hanaonazure/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-hanaonazure";
-  version = "0.12.0";
+  version = "0.13.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "cc844a152079e0d18fb5f47663a24cb204982925425c1fb51bac53894885000b";
+    sha256 = "cc4058174e371a0b68b305cd5a082fcca47f3446dd9aefd9ada72da4bd637da9";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix b/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
index 29069d71b88a8..5ba25e11a89ed 100644
--- a/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iotcentral/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-iotcentral";
-  version = "2.0.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1fql0j28d2r6slgabb7b438gdga513iskqh4al6c7dsmj1yzdzwa";
+    sha256 = "f6dacf442ccae2f18f1082e80bcbdcaa8c0efa2ba92b48c5db6ee01d37240047";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-iothub/default.nix b/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
index 1e4c8923d7d3d..57ec64f3d5628 100644
--- a/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-iothub/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-iothub";
-  version = "0.10.0";
+  version = "0.11.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1xms5wf21z9i28xl0p515xb08mrlsqnzhxcwv7pjlf26lwxadfi0";
+    sha256 = "f6fbb87d9bf29ce325543c9a3a125fbe45f4797f3a7f260c6c21ca60dc3f0885";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
index 43f0394669b7f..336bba6a17094 100644
--- a/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-keyvault/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-keyvault";
-  version = "2.1.1";
+  version = "2.2.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "0ga6lzqlinfxlzx1g35a5sv5chjx4im0m4b8i33hqrhmdv9m7ypg";
+    sha256 = "1883e12eeb5819064dc52bf3a3ade05c791f4b66e4aeec948bda28df6ce2bce4";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-kusto/default.nix b/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
index 53aeff46c585c..08a9b6b507ef9 100644
--- a/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-kusto/default.nix
@@ -5,13 +5,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "0.5.0";
+  version = "0.7.0";
   pname = "azure-mgmt-kusto";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0r6j3yp7ys0zgszqdjm6y90nigsapni4xhfpfgyk5c5qbgdpl93w";
+    sha256 = "40f8e62db145d31731018b83baf2d1a78b585514c373dd3c095f1f6835d17d23";
     extension = "zip";
   };
 
diff --git a/pkgs/development/python-modules/azure-mgmt-monitor/default.nix b/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
index 252760950e5be..ccefd96ce73bb 100644
--- a/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-monitor/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-monitor";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1pprvk5255b6brbw73g0g13zygwa7a2px5x08wy3153rqlzan5l2";
+    sha256 = "09bhk6kpf1j1kgsyfdrfmfixrdj0iikx25dr1mh9dc6lci07i1cx";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-network/default.nix b/pkgs/development/python-modules/azure-mgmt-network/default.nix
index ac99b98f0e5e5..00480ac38bc21 100644
--- a/pkgs/development/python-modules/azure-mgmt-network/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-network/default.nix
@@ -7,13 +7,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "9.0.0";
+  version = "10.0.0";
   pname = "azure-mgmt-network";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "12bsdbh37xiz42hvrp8ghszyqkiali3pk50x44f3aip12pgx6kix";
+    sha256 = "3978da4641b3396d4a00c7ddd53d87ece7e7d45b5bc41a157639bdd2f2c5b9b3";
   };
 
   postInstall = if isPy3k then "" else ''
diff --git a/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix b/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
index 37c7e46cbf3a1..ad8a2a0fbe238 100644
--- a/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-policyinsights/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-policyinsights";
-  version = "0.4.0";
+  version = "0.5.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1b69rz9wm0jvc54vx3b7h633x8gags51xwxrkp6myar40jggxw6g";
+    sha256 = "ed229e3845c477e88dde413825d4fba0d38b3a5ffab4e694c7d0da995f3db0f3";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix b/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
index 6a7b6df241853..858bde7644029 100644
--- a/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-rdbms/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-rdbms";
-  version = "2.0.0";
+  version = "2.1.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "19z0lpq6bpidlflwa263y51549xgcg4m040k872m7fmy7jm2xcbb";
+    sha256 = "7826601507878e77f5d5cd805c6ad1d6483c375b545d5e9e1694b5a6c5e12fe3";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix b/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
index 990f494ecedc5..ece93025b571e 100644
--- a/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-recoveryservicesbackup/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-recoveryservicesbackup";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "13s2k4jl8570bj6jkqzm0w29z29rl7h5i7czd3kr6vqar5wj9xjd";
+    sha256 = "6355d9234d87422d57bf2ea8d1cc242463c203e4bb79b8930f22f29f4e025fa1";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-reservations/default.nix b/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
index 5d13acb6ec837..3873f08e3ce29 100644
--- a/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-reservations/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-reservations";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "16ycni3cjl9c0mv419gy5rgbrlg8zp0vnr6aj8z8p2ypdw6sgac3";
+    sha256 = "f65c1985a47e0ac55e7d5d9cc1bd5e95335a111566edc289d460aa2bc8f80991";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-sql/default.nix b/pkgs/development/python-modules/azure-mgmt-sql/default.nix
index a81f336df066f..1b6649a36f235 100644
--- a/pkgs/development/python-modules/azure-mgmt-sql/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-sql/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-sql";
-  version = "0.17.0";
+  version = "0.18.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "1kp1wzcydgyc2mzkxigfv6rqzwzf3d0cnbqc6w7h907qbb4lw2r0";
+    sha256 = "99ca085eb523a5c27933060ccb04d7a6b60864f98d87bf5b63ac17d419b43445";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-mgmt-storage/default.nix b/pkgs/development/python-modules/azure-mgmt-storage/default.nix
index 0b2442b087dea..48af270a9d700 100644
--- a/pkgs/development/python-modules/azure-mgmt-storage/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-storage/default.nix
@@ -7,13 +7,13 @@
 }:
 
 buildPythonPackage rec {
-  version = "7.2.0";
+  version = "8.0.0";
   pname = "azure-mgmt-storage";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "01ck1ankgr9ikvfghhdcs777yrl2j2p8cw9q8nfdrjp22lpchabl";
+    sha256 = "636778912823cebed1c212e4feacc4885d9e49e19a047da20fca9393bc6fac33";
   };
 
   postInstall = if isPy3k then "" else ''
diff --git a/pkgs/development/python-modules/azure-mgmt-web/default.nix b/pkgs/development/python-modules/azure-mgmt-web/default.nix
index ea6c1502123f0..3b25c93a1bd1a 100644
--- a/pkgs/development/python-modules/azure-mgmt-web/default.nix
+++ b/pkgs/development/python-modules/azure-mgmt-web/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "azure-mgmt-web";
-  version = "0.44.0";
+  version = "0.45.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "05dqakhfi301k2jnvccxdkigqvwnf9xz858pqg9vsri3dq69f1rw";
+    sha256 = "04wdb7vksjhcvv0gkjjr37lmb5ads5pr00cjac8r3szimr64zspr";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/azure-storage-file-share/default.nix b/pkgs/development/python-modules/azure-storage-file-share/default.nix
index 78950d2971e8d..a4f8e161ba3b4 100644
--- a/pkgs/development/python-modules/azure-storage-file-share/default.nix
+++ b/pkgs/development/python-modules/azure-storage-file-share/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "azure-storage-file-share";
-  version = "12.0.0";
+  version = "12.1.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "15f5vk3vd2amggqqznx186raak9wgr57j0l1p9qa62kcl10bs9lg";
+    sha256 = "661ed9669b9fbb3163899294d28f11f7c135336e1513aab6bd1ff9ef3c6febb3";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/bacpypes/default.nix b/pkgs/development/python-modules/bacpypes/default.nix
new file mode 100644
index 0000000000000..141dbf241f253
--- /dev/null
+++ b/pkgs/development/python-modules/bacpypes/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildPythonPackage, fetchPypi, fetchFromGitHub
+, wheel, pytestCheckHook, pytestrunner }:
+
+buildPythonPackage rec {
+  version = "0.18.0";
+  pname = "bacpypes";
+
+  src = fetchFromGitHub {
+    owner = "JoelBender";
+    repo = "bacpypes";
+    rev = "${version}";
+    sha256 = "1nz0qi46z6n455mw2ppxgz091qh0irizlxpvkx7iw1l7f6mmgj0x";
+  };
+
+  propagatedBuildInputs = [ wheel ];
+
+  # Using pytes instead of setuptools check hook allows disabling specific tests
+  checkInputs = [ pytestCheckHook pytestrunner ];
+  dontUseSetuptoolsCheck = true;
+  disabledTests = [
+    # Test fails with a an error: AssertionError: assert 30 == 31
+    "test_recurring_task_5"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/JoelBender/bacpypes";
+    description = "BACpypes provides a BACnet application layer and network layer written in Python for daemons, scripting, and graphical interfaces.";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bachp ];
+  };
+}
diff --git a/pkgs/development/python-modules/bayespy/default.nix b/pkgs/development/python-modules/bayespy/default.nix
index 210fbbe2176e8..b1cf349593427 100644
--- a/pkgs/development/python-modules/bayespy/default.nix
+++ b/pkgs/development/python-modules/bayespy/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi, pythonOlder
-, pytest, glibcLocales
+, pytest, nose, glibcLocales
 , numpy, scipy, matplotlib, h5py }:
 
 buildPythonPackage rec {
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     sha256 = "24e1327ce241a0113abf217fbaf41ac25e04f5a01f9ed606610f2f1f2d82d34f";
   };
 
-  checkInputs = [ pytest glibcLocales ];
+  checkInputs = [ pytest nose glibcLocales ];
   propagatedBuildInputs = [ numpy scipy matplotlib h5py ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/billiard/default.nix b/pkgs/development/python-modules/billiard/default.nix
index e53aa40446eb2..91624210bb566 100644
--- a/pkgs/development/python-modules/billiard/default.nix
+++ b/pkgs/development/python-modules/billiard/default.nix
@@ -1,16 +1,19 @@
-{ stdenv, buildPythonPackage, fetchPypi, isPyPy, pytest_4, case, psutil }:
+{ stdenv, buildPythonPackage, fetchPypi, isPyPy, pytest, case, psutil }:
 
 buildPythonPackage rec {
   pname = "billiard";
-  version = "3.6.1.0";
+  version = "3.6.3.0";
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b8809c74f648dfe69b973c8e660bcec00603758c9db8ba89d7719f88d5f01f26";
+    sha256 = "0spssl3byzqsplra166d59jx8iqfxyzvcbx7vybkmwr5ck72a5yr";
   };
 
-  checkInputs = [ pytest_4 case psutil ];
+  checkInputs = [ pytest case psutil ];
+  checkPhase = ''
+    pytest
+  '';
 
   meta = with stdenv.lib; {
     homepage = https://github.com/celery/billiard;
diff --git a/pkgs/development/python-modules/bravia-tv/default.nix b/pkgs/development/python-modules/bravia-tv/default.nix
new file mode 100644
index 0000000000000..2df937f4232c4
--- /dev/null
+++ b/pkgs/development/python-modules/bravia-tv/default.nix
@@ -0,0 +1,28 @@
+{ lib, fetchFromGitHub, buildPythonPackage, isPy27, requests }:
+
+buildPythonPackage rec {
+  pname = "bravia-tv";
+  version = "1.0.1";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "dcnielsen90";
+    repo = "python-bravia-tv";
+    rev = "v${version}";
+    sha256 = "0jlrin5qw3ny2r961y5divd5xa9giprxhhxdc84rjlq9qdmnsk68";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  # package does not include tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "bravia_tv" ];
+
+  meta = with lib; {
+    homepage = "https://github.com/dcnielsen90/python-bravia-tv";
+    description = "Python library for Sony Bravia TV remote control";
+    license = licenses.mit;
+    maintainers = with maintainers; [ colemickens ];
+  };
+}
diff --git a/pkgs/development/python-modules/buildout-nix/default.nix b/pkgs/development/python-modules/buildout-nix/default.nix
index c33006377df00..cf8b138230153 100644
--- a/pkgs/development/python-modules/buildout-nix/default.nix
+++ b/pkgs/development/python-modules/buildout-nix/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "zc.buildout";
-  version = "2.13.2";
+  version = "2.13.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5dd4de86dda684c46ef8ee9cc84e335ca7f6275d4363a684de82225270d1e328";
+    sha256 = "1dyc5g3yv7wm3hf3fcsh6y1wivzjj1bspafr5qqb653z9a31lsfn";
   };
 
   patches = [ ./nix.patch ];
@@ -14,7 +14,7 @@ buildPythonPackage rec {
   postInstall = "mv $out/bin/buildout{,-nix}";
 
   meta = {
-    homepage = http://www.buildout.org;
+    homepage = "http://www.buildout.org";
     description = "A software build and configuration system";
     license = stdenv.lib.licenses.zpl21;
     maintainers = [ stdenv.lib.maintainers.goibhniu ];
diff --git a/pkgs/development/python-modules/buildout/default.nix b/pkgs/development/python-modules/buildout/default.nix
index 419e8dce21266..20731e76c814f 100644
--- a/pkgs/development/python-modules/buildout/default.nix
+++ b/pkgs/development/python-modules/buildout/default.nix
@@ -2,15 +2,15 @@
 
 buildPythonPackage rec {
   pname = "zc.buildout";
-  version = "2.13.2";
+  version = "2.13.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a73s5q548l2vs2acqs3blkzd9sw6d7ci77fz1pc9156vn3dxm2x";
+    sha256 = "1dyc5g3yv7wm3hf3fcsh6y1wivzjj1bspafr5qqb653z9a31lsfn";
   };
 
   meta = with stdenv.lib; {
-    homepage = http://www.buildout.org;
+    homepage = "http://www.buildout.org";
     description = "A software build and configuration system";
     license = licenses.zpl21;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/python-modules/carbon/default.nix b/pkgs/development/python-modules/carbon/default.nix
index c471240c87ad5..427108a939105 100644
--- a/pkgs/development/python-modules/carbon/default.nix
+++ b/pkgs/development/python-modules/carbon/default.nix
@@ -6,17 +6,19 @@ buildPythonPackage rec {
   pname = "carbon";
   version = "1.1.6";
 
-  disabled = isPy3k;
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "9ecda1469e497e3fed346b23ac94fd576e1bd9962677ab88975f4f598186e851";
   };
 
+  # Carbon-s default installation is /opt/graphite. This env variable ensures
+  # carbon is installed as a regular python module.
+  GRAPHITE_NO_PREFIX="True";
+
   propagatedBuildInputs = [ twisted whisper txamqp cachetools urllib3 ];
 
   meta = with stdenv.lib; {
-    homepage = http://graphite.wikidot.com/;
+    homepage = "http://graphiteapp.org/";
     description = "Backend data caching and persistence daemon for Graphite";
     maintainers = with maintainers; [ offline basvandijk ];
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/cchardet/default.nix b/pkgs/development/python-modules/cchardet/default.nix
index 1fb506682baf0..5256d6050490f 100644
--- a/pkgs/development/python-modules/cchardet/default.nix
+++ b/pkgs/development/python-modules/cchardet/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "cchardet";
-  version = "2.1.5";
+  version = "2.1.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "240efe3f255f916769458343840b9c6403cf3192720bc5129792cbcb88bf72fb";
+    sha256 = "1cs6y59qhbal8fgbyjk2lpjykh8kfjhq16clfssylsddb4hgnsmp";
   };
 
   checkInputs = [ nose ];
@@ -21,7 +21,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "High-speed universal character encoding detector";
-    homepage = https://github.com/PyYoshi/cChardet;
+    homepage = "https://github.com/PyYoshi/cChardet";
     license = lib.licenses.mpl11;
     maintainers = with lib.maintainers; [ ivan ];
   };
diff --git a/pkgs/development/python-modules/celery/default.nix b/pkgs/development/python-modules/celery/default.nix
index 4522379fa64aa..68c6c282c9b91 100644
--- a/pkgs/development/python-modules/celery/default.nix
+++ b/pkgs/development/python-modules/celery/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "celery";
-  version = "4.4.0";
+  version = "4.4.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d3363bb5df72d74420986a435449f3c3979285941dff57d5d97ecba352a0e3e2";
+    sha256 = "0ps1c6ill7q0m5kzb87hisgshdk3kzpa6cvcjch1d1wa07whp2hh";
   };
 
   postPatch = ''
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   # test_eventlet touches network
   # test_mongodb requires pymongo
   checkPhase = ''
-    pytest -k 'not restore_current_app_fallback and not msgpack' \
+    pytest -k 'not restore_current_app_fallback and not msgpack and not on_apply' \
       --ignore=t/unit/concurrency/test_eventlet.py \
       --ignore=t/unit/backends/test_mongodb.py
   '';
diff --git a/pkgs/development/python-modules/ciso8601/default.nix b/pkgs/development/python-modules/ciso8601/default.nix
new file mode 100644
index 0000000000000..d0de4b320e8dc
--- /dev/null
+++ b/pkgs/development/python-modules/ciso8601/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pytz
+, unittest2
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "ciso8601";
+  version = "2.1.3";
+
+  src = fetchFromGitHub {
+    owner = "closeio";
+    repo = "ciso8601";
+    rev = "v${version}";
+    sha256 = "0g1aiyc1ayh0rnibyy416m5mmck38ksgdm3jsy0z3rxgmgb24951";
+  };
+
+  checkInputs = [
+    pytz
+  ] ++ lib.optional (isPy27) unittest2;
+
+  meta = with lib; {
+    description = "Fast ISO8601 date time parser for Python written in C";
+    homepage = "https://github.com/closeio/ciso8601";
+    license = licenses.mit;
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/pkgs/development/python-modules/clikit/default.nix b/pkgs/development/python-modules/clikit/default.nix
index 94f3fa08b1382..054b6edee6da3 100644
--- a/pkgs/development/python-modules/clikit/default.nix
+++ b/pkgs/development/python-modules/clikit/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "clikit";
-  version = "0.4.1";
+  version = "0.4.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8ae4766b974d7b1983e39d501da9a0aadf118a907a0c9b50714d027c8b59ea81";
+    sha256 = "0glppxx0pyppjcigzs8h16srlbxb6nci0282xfy3ayvwbq8pwbbf";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/cufflinks/default.nix b/pkgs/development/python-modules/cufflinks/default.nix
index ed25c2c73717b..4c2db1f52146c 100644
--- a/pkgs/development/python-modules/cufflinks/default.nix
+++ b/pkgs/development/python-modules/cufflinks/default.nix
@@ -3,6 +3,7 @@
 , colorlover
 , ipython
 , ipywidgets
+, pytest
 , nose
 , numpy
 , pandas
@@ -12,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "cufflinks";
-  version = "0.16";
+  version = "0.17.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "163lag5g4micpqm3m4qy9b5r06a7pw45nq80x4skxc7dcrly2ygd";
+    sha256 = "0i56062k54dlg5iz3qyl1ykww62mpkp8jr4n450h0c60dm0b7ha8";
   };
 
   propagatedBuildInputs = [
@@ -30,24 +31,12 @@ buildPythonPackage rec {
     statsmodels
   ];
 
-  patches = [
-    # Plotly 4 compatibility. Remove with next release, assuming it gets merged.
-    (fetchpatch {
-      url = "https://github.com/santosjorge/cufflinks/pull/202/commits/e291dce14181858cb457404adfdaf2624b6d0594.patch";
-      sha256 = "1l0dahwqn3cxg49v3i3amwi80dmx2bi5zrazmgzpwsfargmk2kd1";
-    })
-  ];
-
-  # in plotly4+, the plotly.plotly module was moved to chart-studio.plotly
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "plotly>=3.0.0,<4.0.0a0" "chart-studio"
-  '';
-
-  checkInputs = [ nose ];
+  checkInputs = [ pytest nose ];
 
+  # ignore tests which are incompatible with pandas>=1.0
+  # https://github.com/santosjorge/cufflinks/issues/236
   checkPhase = ''
-    nosetests -xv tests.py
+    pytest tests.py -k 'not bar_row'
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/cvxopt/default.nix b/pkgs/development/python-modules/cvxopt/default.nix
index a842baca22891..fd44f49b53c92 100644
--- a/pkgs/development/python-modules/cvxopt/default.nix
+++ b/pkgs/development/python-modules/cvxopt/default.nix
@@ -31,8 +31,8 @@ buildPythonPackage rec {
     export CVXOPT_BLAS_LIB_DIR=${openblasCompat}/lib
     export CVXOPT_BLAS_LIB=openblas
     export CVXOPT_LAPACK_LIB=openblas
-    export CVXOPT_SUITESPARSE_LIB_DIR=${suitesparse}/lib
-    export CVXOPT_SUITESPARSE_INC_DIR=${suitesparse}/include
+    export CVXOPT_SUITESPARSE_LIB_DIR=${lib.getLib suitesparse}/lib
+    export CVXOPT_SUITESPARSE_INC_DIR=${lib.getDev suitesparse}/include
   '' + lib.optionalString withGsl ''
     export CVXOPT_BUILD_GSL=1
     export CVXOPT_GSL_LIB_DIR=${gsl}/lib
diff --git a/pkgs/development/python-modules/deap/default.nix b/pkgs/development/python-modules/deap/default.nix
index 9c49057398c9e..5a09c42a9bbf7 100644
--- a/pkgs/development/python-modules/deap/default.nix
+++ b/pkgs/development/python-modules/deap/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, python, numpy, matplotlib }:
+{ stdenv, buildPythonPackage, fetchPypi, python, numpy, matplotlib, nose }:
 
 buildPythonPackage rec {
   pname = "deap";
@@ -11,6 +11,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ numpy matplotlib ];
 
+  checkInputs = [ nose ];
   checkPhase = ''
     ${python.interpreter} setup.py nosetests --verbosity=3
   '';
diff --git a/pkgs/development/python-modules/dipy/default.nix b/pkgs/development/python-modules/dipy/default.nix
new file mode 100644
index 0000000000000..939f0912fe1fe
--- /dev/null
+++ b/pkgs/development/python-modules/dipy/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, packaging
+, pytest
+, cython
+, numpy
+, scipy
+, h5py
+, nibabel
+}:
+
+buildPythonPackage rec {
+  pname = "dipy";
+  version = "1.1.1";
+
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner  = "dipy";
+    repo   = pname;
+    rev    = version;
+    sha256 = "08abx0f4li6ya62ilc59miw4mk6wndizahyylxhgcrpacb6ydw28";
+  };
+
+  nativeBuildInputs = [ cython packaging ];
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    h5py
+    nibabel
+  ];
+
+  checkInputs = [ pytest ];
+
+  # disable tests for now due to:
+  #   - some tests require data download (see dipy/dipy/issues/2092);
+  #   - running the tests manually causes a multiprocessing hang;
+  #   - import weirdness when running the tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "dipy"
+    "dipy.core"
+    "dipy.direction"
+    "dipy.tracking"
+    "dipy.reconst"
+    "dipy.io"
+    "dipy.viz"
+    "dipy.boots"
+    "dipy.data"
+    "dipy.utils"
+    "dipy.segment"
+    "dipy.sims"
+    "dipy.stats"
+    "dipy.denoise"
+    "dipy.workflows"
+    "dipy.nn"
+  ];
+
+  meta = with lib; {
+    homepage = "https://dipy.org/";
+    description = "Diffusion imaging toolkit for Python";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ bcdarwin ];
+  };
+}
diff --git a/pkgs/development/python-modules/distributed/default.nix b/pkgs/development/python-modules/distributed/default.nix
index 951593bac972d..d85b4496e22ab 100644
--- a/pkgs/development/python-modules/distributed/default.nix
+++ b/pkgs/development/python-modules/distributed/default.nix
@@ -3,7 +3,6 @@
 , fetchPypi
 , pytest
 , pytest-repeat
-, pytest-faulthandler
 , pytest-timeout
 , mock
 , joblib
@@ -36,7 +35,7 @@ buildPythonPackage rec {
     sha256 = "d37a5c5be992f3b16db24b54d2801cbe370990fbc63089c6e7ef40d6f03cf5dd";
   };
 
-  checkInputs = [ pytest pytest-repeat pytest-faulthandler pytest-timeout mock joblib ];
+  checkInputs = [ pytest pytest-repeat pytest-timeout mock joblib ];
   propagatedBuildInputs = [
       click cloudpickle dask msgpack psutil six
       sortedcontainers tblib toolz tornado zict pyyaml mpi4py bokeh
@@ -54,7 +53,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "Distributed computation in Python.";
-    homepage = https://distributed.readthedocs.io/en/latest/;
+    homepage = "https://distributed.readthedocs.io/en/latest/";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.x86; # fails on aarch64
     maintainers = with lib.maintainers; [ teh costrouc ];
diff --git a/pkgs/development/python-modules/django/1_8.nix b/pkgs/development/python-modules/django/1_8.nix
deleted file mode 100644
index d575599cbe1d9..0000000000000
--- a/pkgs/development/python-modules/django/1_8.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchurl
-}:
-
-buildPythonPackage rec {
-  pname = "Django";
-  version = "1.8.19";
-
-  src = fetchurl {
-    url = "http://www.djangoproject.com/m/releases/1.8/${pname}-${version}.tar.gz";
-    sha256 = "0iy0ni9j1rnx9b06ycgbg2dkrf3qid3y2jipk9x28cykz5f4mm1k";
-  };
-
-  # too complicated to setup
-  doCheck = false;
-
-  meta = with stdenv.lib; {
-    description = "A high-level Python Web framework";
-    homepage = https://www.djangoproject.com/;
-    license = licenses.bsd0;
-    knownVulnerabilities = [
-      # The patches were not backported due to Django 1.8 having reached EOL
-      https://www.djangoproject.com/weblog/2018/aug/01/security-releases/
-      https://www.djangoproject.com/weblog/2019/jan/04/security-releases/
-      https://www.djangoproject.com/weblog/2019/feb/11/security-releases/
-      https://www.djangoproject.com/weblog/2019/jun/03/security-releases/
-      https://www.djangoproject.com/weblog/2019/jul/01/security-releases/
-    ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/django/2_2.nix b/pkgs/development/python-modules/django/2_2.nix
index 3a591e7009bd3..63a0f33d8f934 100644
--- a/pkgs/development/python-modules/django/2_2.nix
+++ b/pkgs/development/python-modules/django/2_2.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "Django";
-  version = "2.2.10";
+  version = "2.2.11";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16h7lw9vnmwarl4pjwc7xnkwmcjq1c79prvfwv8fzixiw65ic9hj";
+    sha256 = "0l0gndky4nwc1jk68b31m583a9g0fhmll903p0xislyyddz3iqk5";
   };
 
   patches = stdenv.lib.optional withGdal
diff --git a/pkgs/development/python-modules/doc8/default.nix b/pkgs/development/python-modules/doc8/default.nix
index 307496cc65ce2..f7e620f491cb6 100644
--- a/pkgs/development/python-modules/doc8/default.nix
+++ b/pkgs/development/python-modules/doc8/default.nix
@@ -7,6 +7,7 @@
 , chardet
 , stevedore
 , restructuredtext_lint
+, pygments
 }:
 
 buildPythonPackage rec {
@@ -19,7 +20,14 @@ buildPythonPackage rec {
   };
 
   buildInputs = [ pbr ];
-  propagatedBuildInputs = [ docutils six chardet stevedore restructuredtext_lint ];
+  propagatedBuildInputs = [
+    docutils
+    six
+    chardet
+    stevedore
+    restructuredtext_lint
+    pygments
+  ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/dropbox/default.nix b/pkgs/development/python-modules/dropbox/default.nix
index ade485c91dc6f..3ca9d59e27f0f 100644
--- a/pkgs/development/python-modules/dropbox/default.nix
+++ b/pkgs/development/python-modules/dropbox/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "dropbox";
-  version = "9.4.0";
+  version = "9.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0qid094qna6bl4zpd08f6snvipwjls1yadacvmwri11djgp0wvj3";
+    sha256 = "0iz9hg1j7q9chka6fyzgpzqg2v4nbjx61xfvn9ixprxrdhvhr2hi";
   };
 
   # Set DROPBOX_TOKEN environment variable to a valid token.
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "A Python library for Dropbox's HTTP-based Core and Datastore APIs";
-    homepage = https://www.dropbox.com/developers/core/docs;
+    homepage = "https://www.dropbox.com/developers/core/docs";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/effect/default.nix b/pkgs/development/python-modules/effect/default.nix
index fec5518f0e80e..67537dd1f48bb 100644
--- a/pkgs/development/python-modules/effect/default.nix
+++ b/pkgs/development/python-modules/effect/default.nix
@@ -1,33 +1,40 @@
 { buildPythonPackage
 , fetchPypi
 , lib
+, isPy3k
 , six
 , attrs
 , pytest
 , testtools
 }:
+
 buildPythonPackage rec {
   version = "1.1.0";
   pname = "effect";
+  disabled = (!isPy3k);
 
   src = fetchPypi {
     inherit pname version;
     sha256 = "7affb603707c648b07b11781ebb793a4b9aee8acf1ac5764c3ed2112adf0c9ea";
   };
+
   checkInputs = [
     pytest
     testtools
   ];
+
   propagatedBuildInputs = [
     six
     attrs
   ];
+
   checkPhase = ''
     pytest
   '';
+
   meta = with lib; {
     description = "Pure effects for Python";
-    homepage = https://github.com/python-effect/effect;
+    homepage = "https://github.com/python-effect/effect";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/etesync/default.nix b/pkgs/development/python-modules/etesync/default.nix
index f96c3e10883c2..4edf0f71cf201 100644
--- a/pkgs/development/python-modules/etesync/default.nix
+++ b/pkgs/development/python-modules/etesync/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "etesync";
-  version = "0.9.3";
+  version = "0.10.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1i6v7i4xmbpkc1pgpzq8gyl2kvg3a1kpdwp8q6l3l0vf9p5qm06w";
+    sha256 = "09sdqviv9jyd013gxjjcw6vd4si860304haylvw4dp9kljsd94qa";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/faulthandler/default.nix b/pkgs/development/python-modules/faulthandler/default.nix
index d69c320ccaac1..f1588690a774a 100644
--- a/pkgs/development/python-modules/faulthandler/default.nix
+++ b/pkgs/development/python-modules/faulthandler/default.nix
@@ -1,18 +1,27 @@
-{ stdenv, fetchPypi, buildPythonPackage }:
+{ lib, fetchPypi, buildPythonPackage }:
 
 buildPythonPackage rec {
   pname = "faulthandler";
-  version = "3.1";
+  version = "3.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "83301ffab03c86b291677b64b5cec7026f412cbda5ebd27e4cb3338452c40021";
+    sha256 = "08ybjjdrfp01syckksxzivqhn6b0yhmc17kdxh77h0lg6rvgvk8y";
   };
 
-  meta = {
+  # This may be papering over a real failure where the env var activation route
+  # for faulthandler does not appear to work. That said, since all other tests
+  # pass and since this module is python 2 only (it was upstreamed into the
+  # interpreter itself as of python 3.3 and is disabled ) this just disables the
+  # test to fix the build. From inspecting Hydra logs and git bisect, the commit
+  # that broke it is this one:
+  # https://github.com/NixOS/nixpkgs/commit/90be4c2c7875c9487508d95b5c638d97e2903ada
+  patches = [ ./disable-env-test.patch ];
+
+  meta = with lib; {
     description = "Dump the Python traceback";
-    license = stdenv.lib.licenses.bsd2;
-    maintainers = with stdenv.lib.maintainers; [ sauyon ];
-    homepage = https://faulthandler.readthedocs.io/;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ sauyon ];
+    homepage = "https://faulthandler.readthedocs.io/";
   };
 }
diff --git a/pkgs/development/python-modules/faulthandler/disable-env-test.patch b/pkgs/development/python-modules/faulthandler/disable-env-test.patch
new file mode 100644
index 0000000000000..5824652f6175e
--- /dev/null
+++ b/pkgs/development/python-modules/faulthandler/disable-env-test.patch
@@ -0,0 +1,13 @@
+diff --git a/tests.py b/tests.py
+index e5a2811..16e7a0f 100644
+--- a/tests.py
++++ b/tests.py
+@@ -394,7 +394,7 @@ class FaultHandlerTests(unittest.TestCase):
+             print(faulthandler.is_enabled())
+             """,
+             env=dict(os.environ, PYTHONFAULTHANDLER='x'))
+-        self.assertEqual(output, ["True"])
++        #self.assertEqual(output, ["True"])
+         self.assertEqual(exitcode, 0)
+ 
+         output, exitcode = self.get_output("""
diff --git a/pkgs/development/python-modules/filetype/default.nix b/pkgs/development/python-modules/filetype/default.nix
index 34f7ac4e4a93d..40bbc688e205c 100644
--- a/pkgs/development/python-modules/filetype/default.nix
+++ b/pkgs/development/python-modules/filetype/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "filetype";
-  version = "1.0.5";
+  version = "1.0.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "17a3b885f19034da29640b083d767e0f13c2dcb5dcc267945c8b6e5a5a9013c7";
+    sha256 = "10985zfx90m527binx3fxvm4nsqmlwf0jj8j8mpbxb8wj8ivkllr";
   };
 
   checkPhase = ''
@@ -19,7 +19,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Infer file type and MIME type of any file/buffer";
-    homepage = https://github.com/h2non/filetype.py;
+    homepage = "https://github.com/h2non/filetype.py";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/pkgs/development/python-modules/fiona/default.nix b/pkgs/development/python-modules/fiona/default.nix
index abc0853b4c71d..cd4ed57d792cb 100644
--- a/pkgs/development/python-modules/fiona/default.nix
+++ b/pkgs/development/python-modules/fiona/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "Fiona";
-  version = "1.8.13";
+  version = "1.8.13.post1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5ec34898c8b983a723fb4e949dd3e0ed7e691c303e51f6bfd61e52ac9ac813ae";
+    sha256 = "00366f2j21b5r4r8310sadf7jjhdr44s0381dhjqkw2nzpwjnhqs";
   };
 
   CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
diff --git a/pkgs/development/python-modules/fipy/default.nix b/pkgs/development/python-modules/fipy/default.nix
index 7fbf14cf7de08..76fda47c6a947 100644
--- a/pkgs/development/python-modules/fipy/default.nix
+++ b/pkgs/development/python-modules/fipy/default.nix
@@ -14,6 +14,8 @@
 , gmsh
 , python
 , stdenv
+, openssh
+, fetchurl
 }:
 
 let
@@ -21,12 +23,11 @@ let
 in
   buildPythonPackage rec {
     pname = "fipy";
-    version = "3.3";
+    version = "3.4.1";
 
-    src = fetchPypi {
-      pname = "FiPy";
-      inherit version;
-      sha256 = "11agpg3d6yrns8igkpml1mxy3mkqkjq2yrw1mw12y07dkk12ii19";
+    src = fetchurl {
+      url = "https://github.com/usnistgov/fipy/releases/download/${version}/FiPy-${version}.tar.gz";
+      sha256 = "0078yg96fknqhywn1v26ryc5z47c0j0c1qwz6p8wsjn0wmzggaqk";
     };
 
     propagatedBuildInputs = [
@@ -38,11 +39,13 @@ in
       mpi4py
       future
       scikit-fmm
+      openssh
     ] ++ lib.optionals isPy27 [ pysparse ] ++ not_darwin_inputs;
 
     checkInputs = not_darwin_inputs;
 
     checkPhase = ''
+      export OMPI_MCA_plm_rsh_agent=${openssh}/bin/ssh
       ${python.interpreter} setup.py test --modules
     '';
 
diff --git a/pkgs/development/python-modules/fire/default.nix b/pkgs/development/python-modules/fire/default.nix
index 7af8d29fce73d..0f0f0fd69ee74 100644
--- a/pkgs/development/python-modules/fire/default.nix
+++ b/pkgs/development/python-modules/fire/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "fire";
-  version = "0.2.1";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "python-fire";
     rev = "v${version}";
-    sha256 = "1r6cmihafd7mb6j3mvgk251my6ckb0sqqj1l2ny2azklv175b38a";
+    sha256 = "1jwf1qv9xmr1c8nyvwqn02329vzyh9py4slx13n55ms8h1n998nr";
   };
 
   propagatedBuildInputs = [ six termcolor ] ++ stdenv.lib.optional isPy27 enum34;
diff --git a/pkgs/development/python-modules/flake8-future-import/default.nix b/pkgs/development/python-modules/flake8-future-import/default.nix
index c9cf3fe4ca846..0a60761b9433d 100644
--- a/pkgs/development/python-modules/flake8-future-import/default.nix
+++ b/pkgs/development/python-modules/flake8-future-import/default.nix
@@ -1,30 +1,27 @@
-{ lib, fetchFromGitHub, buildPythonPackage, fetchpatch, flake8, six }:
+{ lib, isPy27, fetchFromGitHub, buildPythonPackage, fetchpatch, flake8, six }:
 
 buildPythonPackage rec {
   pname = "flake8-future-import";
-  version = "0.4.5";
+  version = "0.4.6";
 
   # PyPI tarball doesn't include the test suite
   src = fetchFromGitHub {
     owner = "xZise";
     repo = "flake8-future-import";
     rev = version;
-    sha256 = "00fpxa6g8cabybnciwnpsbg60zhgydc966jgwyyggw1pcg0frdqr";
+    sha256 = "00q8n15xdnvqj454arn7xxksyrzh0dw996kjyy7g9rdk0rf8x82z";
   };
 
-  patches = [
-    # Add Python 3.7 support. Remove with the next release
-    (fetchpatch {
-      url = https://github.com/xZise/flake8-future-import/commit/cace194a44d3b95c9c1ed96640bae49183acca04.patch;
-      sha256 = "17pkqnh035j5s5c53afs8bk49bq7lnmdwqp5k7izx7sw80z73p9r";
-    })
-  ];
-
   propagatedBuildInputs = [ flake8 six ];
 
-  meta = {
-    homepage = https://github.com/xZise/flake8-future-import;
+  # Upstream disables this test case naturally on python 3, but it also fails
+  # inside NixPkgs for python 2. Since it's going to be deleted, we just skip it
+  # on py2 as well.
+  patches = lib.optionals isPy27 [ ./skip-test.patch ];
+
+  meta = with lib; {
     description = "A flake8 extension to check for the imported __future__ modules to make it easier to have a consistent code base";
-    license = lib.licenses.mit;
+    homepage = "https://github.com/xZise/flake8-future-import";
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/flake8-future-import/skip-test.patch b/pkgs/development/python-modules/flake8-future-import/skip-test.patch
new file mode 100644
index 0000000000000..300358f9158b4
--- /dev/null
+++ b/pkgs/development/python-modules/flake8-future-import/skip-test.patch
@@ -0,0 +1,13 @@
+diff --git a/test_flake8_future_import.py b/test_flake8_future_import.py
+index 84fde59..345f23f 100644
+--- a/test_flake8_future_import.py
++++ b/test_flake8_future_import.py
+@@ -230,7 +230,7 @@ class TestBadSyntax(TestCaseBase):
+     """Test using various bad syntax examples from Python's library."""
+ 
+ 
+-@unittest.skipIf(sys.version_info[:2] >= (3, 7), 'flake8 supports up to 3.6')
++@unittest.skip("Has issue with installed path for flake8 in python2")
+ class Flake8TestCase(TestCaseBase):
+ 
+     """
diff --git a/pkgs/development/python-modules/flask-appbuilder/default.nix b/pkgs/development/python-modules/flask-appbuilder/default.nix
index 46841f68d60fc..01bd180a5ae47 100644
--- a/pkgs/development/python-modules/flask-appbuilder/default.nix
+++ b/pkgs/development/python-modules/flask-appbuilder/default.nix
@@ -25,12 +25,12 @@
 
 buildPythonPackage rec {
   pname = "flask-appbuilder";
-  version = "2.1.6";
+  version = "2.3.0";
 
   src = fetchPypi {
     pname = "Flask-AppBuilder";
     inherit version;
-    sha256 = "a37d7d6a62407a2e0975af5305c795f2fb5c06ecc34e3cf64659d083b1b2dd5f";
+    sha256 = "04bsswi7daaqda01a83rd1f2gq6asii520f9arjf7bsy24pmbprc";
   };
 
   checkInputs = [
@@ -60,12 +60,13 @@ buildPythonPackage rec {
   ];
 
   postPatch = ''
-   substituteInPlace setup.py \
-     --replace "jsonschema>=3.0.1<4" "jsonschema" \
-     --replace "marshmallow>=2.18.0,<2.20" "marshmallow" \
-     --replace "PyJWT>=1.7.1" "PyJWT" \
-     --replace "Flask-SQLAlchemy>=2.4,<3" "Flask-SQLAlchemy" \
-     --replace "Flask-JWT-Extended>=3.18,<4" "Flask-JWT-Extended"
+    substituteInPlace setup.py \
+      --replace "apispec[yaml]>=1.1.1, <2" "apispec" \
+      --replace "jsonschema>=3.0.1, <4" "jsonschema" \
+      --replace "marshmallow>=2.18.0, <4.0.0" "marshmallow" \
+      --replace "PyJWT>=1.7.1" "PyJWT" \
+      --replace "Flask-SQLAlchemy>=2.4, <3" "Flask-SQLAlchemy" \
+      --replace "Flask-JWT-Extended>=3.18, <4" "Flask-JWT-Extended"
   '';
 
   # majority of tests require network access or mongo
@@ -73,8 +74,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Simple and rapid application development framework, built on top of Flask";
-    homepage = https://github.com/dpgaspar/flask-appbuilder/;
+    homepage = "https://github.com/dpgaspar/flask-appbuilder/";
     license = licenses.bsd3;
-    maintainers = [ maintainers.costrouc ];
+    maintainers = with maintainers; [ costrouc ];
   };
 }
diff --git a/pkgs/development/python-modules/flask-babel/default.nix b/pkgs/development/python-modules/flask-babel/default.nix
index caaf0a61152bf..307b670fa7f16 100644
--- a/pkgs/development/python-modules/flask-babel/default.nix
+++ b/pkgs/development/python-modules/flask-babel/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "Flask-Babel";
-  version = "0.12.2";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "11jwp8vvq1gnm31qh6ihy2h393hy18yn9yjp569g60r0wj1x2sii";
+    sha256 = "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/flowlogs_reader/default.nix b/pkgs/development/python-modules/flowlogs_reader/default.nix
index 4064fc494b12a..38faa5f12db41 100644
--- a/pkgs/development/python-modules/flowlogs_reader/default.nix
+++ b/pkgs/development/python-modules/flowlogs_reader/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
+, isPy27
 , botocore
 , boto3
 , docutils
@@ -11,6 +12,7 @@
 buildPythonPackage rec {
   pname = "flowlogs_reader";
   version = "2.0.0";
+  disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
diff --git a/pkgs/development/python-modules/fritzconnection/default.nix b/pkgs/development/python-modules/fritzconnection/default.nix
index 32e9e9393ce67..d8f1a52d465af 100644
--- a/pkgs/development/python-modules/fritzconnection/default.nix
+++ b/pkgs/development/python-modules/fritzconnection/default.nix
@@ -1,25 +1,38 @@
-{ stdenv, buildPythonPackage, fetchPypi, lxml, requests, tkinter }:
+{ stdenv, buildPythonPackage, pythonOlder, fetchFromGitHub, pytest, requests }:
 
 buildPythonPackage rec {
   pname = "fritzconnection";
-  version = "0.8.4";
+  version = "1.2.1";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "adc629a48b50700f5478f69436e4b78c8792a9260cc674cccef15ffe68eb0643";
+  src = fetchFromGitHub {
+    owner = "kbr";
+    repo = pname;
+    rev = version;
+    hash = "sha256:17z4shs56ci9mxmilppv5xy9gbnbp6p1h2ms6x55nkvwndacrp7x";
   };
 
+  disabled = pythonOlder "3.5";
+
+  # Exclude test files from build, which cause ImportMismtachErrors and
+  # otherwise missing resources during tests. This patch can be dropped once
+  # https://github.com/kbr/fritzconnection/pull/39 is merged.
   prePatch = ''
-    substituteInPlace fritzconnection/test.py \
-      --replace "from fritzconnection import" "from .fritzconnection import"
+    substituteInPlace setup.py \
+      --replace 'find_packages()' 'find_packages(exclude=["*.tests"])'
   '';
 
-  propagatedBuildInputs = [ lxml requests tkinter ];
+  propagatedBuildInputs = [ requests ];
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    pytest
+  '';
 
   meta = with stdenv.lib; {
     description = "Python-Tool to communicate with the AVM FritzBox using the TR-064 protocol";
-    homepage = https://bitbucket.org/kbr/fritzconnection;
+    homepage = "https://bitbucket.org/kbr/fritzconnection";
     license = licenses.mit;
-    maintainers = with maintainers; [ dotlambda ];
+    maintainers = with maintainers; [ dotlambda valodim ];
   };
 }
diff --git a/pkgs/development/python-modules/ftputil/default.nix b/pkgs/development/python-modules/ftputil/default.nix
index d3d338a2c8d34..5e367644a1c8d 100644
--- a/pkgs/development/python-modules/ftputil/default.nix
+++ b/pkgs/development/python-modules/ftputil/default.nix
@@ -13,10 +13,11 @@ buildPythonPackage rec {
 
   checkPhase = ''
     touch Makefile
-    # Disable tests that require network access or access /home
+    # Disable tests that require network access or access /home or assume execution before year 2020
     py.test test \
       -k "not test_public_servers and not test_real_ftp \
-          and not test_set_parser and not test_repr"
+          and not test_set_parser and not test_repr \
+          and not test_conditional_upload and not test_conditional_download_with_older_target"
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/geoalchemy2/default.nix b/pkgs/development/python-modules/geoalchemy2/default.nix
index 250942a848845..02d00461e26fe 100644
--- a/pkgs/development/python-modules/geoalchemy2/default.nix
+++ b/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "GeoAlchemy2";
-  version = "0.6.3";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1viq85fsb119w4lmxn2iacxf2w35b8cgzamlrb685z50pp1cdi2d";
+    sha256 = "0lnmj9jky9pz227scmjxgvd8243higl24ndc0cc668mm36cnwapc";
   };
 
   propagatedBuildInputs = [ sqlalchemy shapely ];
diff --git a/pkgs/development/python-modules/geopandas/default.nix b/pkgs/development/python-modules/geopandas/default.nix
index b7dea183b0e25..6b1b74cae8a83 100644
--- a/pkgs/development/python-modules/geopandas/default.nix
+++ b/pkgs/development/python-modules/geopandas/default.nix
@@ -1,16 +1,17 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub
+{ stdenv, buildPythonPackage, fetchFromGitHub, isPy27
 , pandas, shapely, fiona, descartes, pyproj
 , pytest, Rtree }:
 
 buildPythonPackage rec {
   pname = "geopandas";
-  version = "0.6.3";
+  version = "0.7.0";
+  disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "geopandas";
     repo = "geopandas";
     rev = "v${version}";
-    sha256 = "11mzb5spwa06h1zhn7z905wcwya2x5srghv82jp5zjka9zdhsycd";
+    sha256 = "0cfdvl4cvi0nim1qbmzf7vg0all272i8r0kj4xgdd0hr2j4jdg9p";
   };
 
   checkInputs = [ pytest Rtree ];
diff --git a/pkgs/development/python-modules/globus-sdk/default.nix b/pkgs/development/python-modules/globus-sdk/default.nix
index 45ae5fe00deda..348c32174a257 100644
--- a/pkgs/development/python-modules/globus-sdk/default.nix
+++ b/pkgs/development/python-modules/globus-sdk/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "globus-sdk";
-  version = "1.8.0";
+  version = "1.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ggxa3av4rwva9h5idg1vfdybr7wkajw7g0sn42k04sxxa0cigwz";
+    sha256 = "1fm0iqfbzd13m1lkd4h3ss4y9isp5cadd2w2k0qr3yqwfmrqqba2";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/google-auth-oauthlib/default.nix b/pkgs/development/python-modules/google-auth-oauthlib/default.nix
index 54498ba1a8538..cf83bd4d0ed62 100644
--- a/pkgs/development/python-modules/google-auth-oauthlib/default.nix
+++ b/pkgs/development/python-modules/google-auth-oauthlib/default.nix
@@ -27,8 +27,9 @@ buildPythonPackage rec {
     google_auth requests_oauthlib
   ];
 
+  doCheck = isPy3k;
   checkPhase = ''
-    rm -fr tests/__pycache__/
+    rm -fr tests/__pycache__/ google
     py.test
   '';
 
diff --git a/pkgs/development/python-modules/google_auth/default.nix b/pkgs/development/python-modules/google_auth/default.nix
index 1f86c2a2af2e5..d8c6a12aeaaf8 100644
--- a/pkgs/development/python-modules/google_auth/default.nix
+++ b/pkgs/development/python-modules/google_auth/default.nix
@@ -1,18 +1,43 @@
 { stdenv, buildPythonPackage, fetchpatch, fetchPypi
-, pytest, mock, oauth2client, flask, requests, setuptools, urllib3, pytest-localserver, six, pyasn1-modules, cachetools, rsa, freezegun }:
+, cachetools
+, flask
+, freezegun
+, mock
+, oauth2client
+, pyasn1-modules
+, pytest
+, pytest-localserver
+, requests
+, responses
+, rsa
+, setuptools
+, six
+, urllib3
+}:
 
 buildPythonPackage rec {
   pname = "google-auth";
-  version = "1.10.0";
+  version = "1.11.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1xs8ch6bz57vs6j0p8061c7wj9ahkvrfpf1y9v7r009979507ckv";
+    sha256 = "05av4clwv7kdk1v55ibcv8aim6dwfg1mi4wy0vv91fr6wq3205zc";
   };
 
-  checkInputs = [ pytest mock oauth2client flask requests urllib3 pytest-localserver freezegun ];
   propagatedBuildInputs = [ six pyasn1-modules cachetools rsa setuptools ];
 
+  checkInputs = [
+    flask
+    freezegun
+    mock
+    oauth2client
+    pytest
+    pytest-localserver
+    requests
+    responses
+    urllib3
+  ];
+
   checkPhase = ''
     py.test
   '';
diff --git a/pkgs/development/python-modules/google_cloud_automl/default.nix b/pkgs/development/python-modules/google_cloud_automl/default.nix
index 3fc0fc8598d5f..e081d4e3c317f 100644
--- a/pkgs/development/python-modules/google_cloud_automl/default.nix
+++ b/pkgs/development/python-modules/google_cloud_automl/default.nix
@@ -3,24 +3,27 @@
 , fetchPypi
 , enum34
 , google_api_core
+, google_cloud_storage
+, pandas
 , pytest
 , mock
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-automl";
-  version = "0.9.0";
+  version = "0.10.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6541245cdee3e3ba5d98bb3ecd0b343fd5d3de1e880cfc5daf59f4a69a045171";
+    sha256 = "031331fs97jpyxacwsmhig0ndidn97r288qnkrzfdvg1wxw5rdhi";
   };
 
-  checkInputs = [ pytest mock ];
+  checkInputs = [ pandas pytest mock google_cloud_storage ];
   propagatedBuildInputs = [ enum34 google_api_core ];
 
+  # ignore tests which need credentials
   checkPhase = ''
-    pytest tests/unit
+    pytest tests/unit -k 'not upload and not prediction_client_client_info'
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/google_cloud_bigquery/default.nix b/pkgs/development/python-modules/google_cloud_bigquery/default.nix
index e361b4436ee8b..0b7c5d5c16efb 100644
--- a/pkgs/development/python-modules/google_cloud_bigquery/default.nix
+++ b/pkgs/development/python-modules/google_cloud_bigquery/default.nix
@@ -1,6 +1,7 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
+, freezegun
 , google_resumable_media
 , google_api_core
 , google_cloud_core
@@ -13,23 +14,29 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery";
-  version = "1.23.1";
+  version = "1.24.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "99c341592d711d8f131fe80d842f7e1b04b2ca1faefa1ffedf4dec1b382cebf6";
+    sha256 = "1ca22hzql8x1z6bx9agidx0q09w24jwzkgg49k5j1spcignwxz3z";
   };
 
-  checkInputs = [ pytest mock ipython ];
+  checkInputs = [ pytest mock ipython freezegun ];
   propagatedBuildInputs = [ google_resumable_media google_api_core google_cloud_core pandas pyarrow ];
 
+  # prevent local directory from shadowing google imports
+  # call_api_applying_custom_retry_on_timeout requires credentials
+  # test_magics requires modifying sys.path
   checkPhase = ''
-    pytest tests/unit
+    rm -r google
+    pytest tests/unit \
+      -k 'not call_api_applying_custom_retry_on_timeout' \
+      --ignore=tests/unit/test_magics.py
   '';
 
   meta = with stdenv.lib; {
     description = "Google BigQuery API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_bigtable/default.nix b/pkgs/development/python-modules/google_cloud_bigtable/default.nix
index a71d2e493ddd4..0eb606bf7f4be 100644
--- a/pkgs/development/python-modules/google_cloud_bigtable/default.nix
+++ b/pkgs/development/python-modules/google_cloud_bigtable/default.nix
@@ -10,23 +10,24 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigtable";
-  version = "1.2.0";
+  version = "1.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eea9d4aca54499b555a893fa441deac1bd7ae9cbc8e03bdd681fd33fad72e170";
+    sha256 = "1wwhjfhvz5g4720qcdrj01fqb8kh3n36sxjpz8pzwhc7z4z5srs8";
   };
 
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ grpc_google_iam_v1 google_api_core google_cloud_core ];
 
   checkPhase = ''
-    pytest tests/unit
+    rm -r google
+    pytest tests/unit -k 'not policy'
   '';
 
   meta = with stdenv.lib; {
     description = "Google Cloud Bigtable API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_container/default.nix b/pkgs/development/python-modules/google_cloud_container/default.nix
index d0994ce5e0bf2..5afaf97cfaadf 100644
--- a/pkgs/development/python-modules/google_cloud_container/default.nix
+++ b/pkgs/development/python-modules/google_cloud_container/default.nix
@@ -2,21 +2,22 @@
 , buildPythonPackage
 , fetchPypi
 , google_api_core
+, grpc_google_iam_v1
 , pytest
 , mock
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-container";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "90cceceb487f1f4f2336b3674d594bc5e492fadbe27a5f06ca056d7148fd90ba";
+    sha256 = "07zjwwliz8wx83l3bv7244qzrv0s3fchp8kgsy5xy41kmkg79a2d";
   };
 
   checkInputs = [ pytest mock ];
-  propagatedBuildInputs = [ google_api_core ];
+  propagatedBuildInputs = [ google_api_core grpc_google_iam_v1 ];
 
   checkPhase = ''
     pytest tests/unit
@@ -24,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Google Container Engine API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_core/default.nix b/pkgs/development/python-modules/google_cloud_core/default.nix
index 2a9a13b26307c..c5a0ead7c50f9 100644
--- a/pkgs/development/python-modules/google_cloud_core/default.nix
+++ b/pkgs/development/python-modules/google_cloud_core/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-core";
-  version = "1.2.0";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0vfhvpiiigfldi3vb0730w13md1c90irpdx5kypmnfszrrzg7q2a";
+    sha256 = "1n19q57y4d89cjgmrg0f2a7yp7l1np2448mrhpndq354h389m3w7";
   };
 
   propagatedBuildInputs = [ google_api_core grpcio setuptools ];
diff --git a/pkgs/development/python-modules/google_cloud_datastore/default.nix b/pkgs/development/python-modules/google_cloud_datastore/default.nix
index 7f47725cde35f..859e2271824f7 100644
--- a/pkgs/development/python-modules/google_cloud_datastore/default.nix
+++ b/pkgs/development/python-modules/google_cloud_datastore/default.nix
@@ -9,23 +9,24 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-datastore";
-  version = "1.10.0";
+  version = "1.11.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cae213e3817f37fdc3ac27c3a162024de3319ad0faf87a536fce375c4a1c1dc9";
+    sha256 = "1p0ifkhj48fa3m1y5990412s8msnn6mbz5p5g8ffln7jq7dvn57j";
   };
 
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ google_api_core google_cloud_core ];
 
   checkPhase = ''
+    rm -r google
     pytest tests/unit
   '';
 
   meta = with stdenv.lib; {
     description = "Google Cloud Datastore API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_dns/default.nix b/pkgs/development/python-modules/google_cloud_dns/default.nix
index 3ed34303a727d..833dfed4d6b2e 100644
--- a/pkgs/development/python-modules/google_cloud_dns/default.nix
+++ b/pkgs/development/python-modules/google_cloud_dns/default.nix
@@ -9,23 +9,24 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dns";
-  version = "0.31.0";
+  version = "0.32.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0dc0244c96378615b19679ab001a85fe74b564233d4f3e185a0f8fe333530fe2";
+    sha256 = "1shaj1x9ccwz1ad41f8hkldibpg313raqlhwky7wij4gn2nix22i";
   };
 
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ google_api_core google_cloud_core ];
 
   checkPhase = ''
+    rm -r google
     pytest tests/unit
   '';
 
   meta = with stdenv.lib; {
     description = "Google Cloud DNS API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_error_reporting/default.nix b/pkgs/development/python-modules/google_cloud_error_reporting/default.nix
index ef07bf1a3cecf..724539c55a0f3 100644
--- a/pkgs/development/python-modules/google_cloud_error_reporting/default.nix
+++ b/pkgs/development/python-modules/google_cloud_error_reporting/default.nix
@@ -19,12 +19,13 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ google_cloud_logging ];
 
   checkPhase = ''
+    rm -r google
     pytest tests/unit
   '';
 
   meta = with stdenv.lib; {
     description = "Stackdriver Error Reporting API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_logging/default.nix b/pkgs/development/python-modules/google_cloud_logging/default.nix
index c4d9a1cb8d555..7ea418977dfbe 100644
--- a/pkgs/development/python-modules/google_cloud_logging/default.nix
+++ b/pkgs/development/python-modules/google_cloud_logging/default.nix
@@ -12,17 +12,18 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-logging";
-  version = "1.14.0";
+  version = "1.15.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3c12d4421df8e4e77b5e029b1341ae80d180cfda0f9cbef417f36438630cc35f";
+    sha256 = "0smpvzdbz3ih3vc0nmn9619xa40mmqk9rs9ic1mwwyh1iyi44waz";
   };
 
   checkInputs = [ pytest mock webapp2 django flask ];
   propagatedBuildInputs = [ google_api_core google_cloud_core ];
 
   checkPhase = ''
+    rm -r google
     pytest tests/unit
   '';
 
diff --git a/pkgs/development/python-modules/google_cloud_resource_manager/default.nix b/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
index 70dd5475c216c..d1d4217b3ccc9 100644
--- a/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
+++ b/pkgs/development/python-modules/google_cloud_resource_manager/default.nix
@@ -9,23 +9,24 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-resource-manager";
-  version = "0.30.0";
+  version = "0.30.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6e4f1d618d8934ee9011e97db940bb177770b430fd29e58848599a416d9f6590";
+    sha256 = "03n9ahf4qiyamblh217m5bjc8n57gh09xz87l2iw84c81xxdfcpg";
   };
 
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ google_cloud_core google_api_core ];
 
   checkPhase = ''
+    rm -r google
     pytest tests/unit
   '';
 
   meta = with stdenv.lib; {
     description = "Google Cloud Resource Manager API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix b/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix
index a1628b9914006..f8962e6fa5d90 100644
--- a/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix
+++ b/pkgs/development/python-modules/google_cloud_runtimeconfig/default.nix
@@ -19,13 +19,15 @@ buildPythonPackage rec {
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ google_api_core google_cloud_core ];
 
+  # ignore tests which require credentials or network
   checkPhase = ''
-    pytest tests/unit
+    rm -r google
+    pytest tests/unit -k 'not client and not extra_headers'
   '';
 
   meta = with stdenv.lib; {
     description = "Google Cloud RuntimeConfig API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_spanner/default.nix b/pkgs/development/python-modules/google_cloud_spanner/default.nix
index 80e88d53f1fc8..f6c54be1279a0 100644
--- a/pkgs/development/python-modules/google_cloud_spanner/default.nix
+++ b/pkgs/development/python-modules/google_cloud_spanner/default.nix
@@ -11,23 +11,25 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-spanner";
-  version = "1.13.0";
+  version = "1.15.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eafa09cc344339a23702ee74eac5713974fefafdfd56afb589bd25548c79c80d";
+    sha256 = "1ra1cim9kcs680yrhvfn5hjx8y1sccp3lw7id5j5pj53sshdng8h";
   };
 
   checkInputs = [ pytest mock ];
   propagatedBuildInputs = [ grpcio-gcp grpc_google_iam_v1 google_api_core google_cloud_core ];
 
+  # avoid importing local package
   checkPhase = ''
+    rm -r google
     pytest tests/unit
   '';
 
   meta = with stdenv.lib; {
     description = "Cloud Spanner API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/google_cloud_storage/default.nix b/pkgs/development/python-modules/google_cloud_storage/default.nix
index ff750602465bc..856de74dd9385 100644
--- a/pkgs/development/python-modules/google_cloud_storage/default.nix
+++ b/pkgs/development/python-modules/google_cloud_storage/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-storage";
-  version = "1.23.0";
+  version = "1.26.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c66e876ae9547884fa42566a2ebfec51d280f488d7a058af9611ba90c78bed78";
+    sha256 = "0caxqf6vda89cmc81fxhmfk3n61aypqz2sswnbsylzf436rsxpzz";
   };
 
   propagatedBuildInputs = [
@@ -26,8 +26,11 @@ buildPythonPackage rec {
   ];
   checkInputs = [ pytest mock ];
 
+  # remove directory from interferring with importing modules
+  # ignore tests which require credentials
   checkPhase = ''
-   pytest tests/unit
+    rm -r google
+    pytest tests/unit -k 'not create'
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/google_cloud_translate/default.nix b/pkgs/development/python-modules/google_cloud_translate/default.nix
index 99494b6886cb6..7537b6fe52d99 100644
--- a/pkgs/development/python-modules/google_cloud_translate/default.nix
+++ b/pkgs/development/python-modules/google_cloud_translate/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-translate";
-  version = "2.0.0";
+  version = "2.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0nfc628nr2k6kd3q9qpgwz7c12l0191rv5x4pvca8q82jl96gip5";
+    sha256 = "02wlqlrxk0x6a9wifcly2pr84r6k8i97ws0prx21379fss39gf2a";
   };
 
   # google_cloud_core[grpc] -> grpcio
@@ -23,12 +23,12 @@ buildPythonPackage rec {
   checkInputs = [ pytest mock ];
   checkPhase = ''
     cd tests # prevent local google/__init__.py from getting loaded
-    pytest unit
+    pytest unit -k 'not extra_headers'
   '';
 
   meta = with stdenv.lib; {
     description = "Google Cloud Translation API client library";
-    homepage = https://github.com/GoogleCloudPlatform/google-cloud-python;
+    homepage = "https://github.com/GoogleCloudPlatform/google-cloud-python";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
   };
diff --git a/pkgs/development/python-modules/graph-tool/2.x.x.nix b/pkgs/development/python-modules/graph-tool/2.x.x.nix
index e069c8f8c7b6b..88e0902529c04 100644
--- a/pkgs/development/python-modules/graph-tool/2.x.x.nix
+++ b/pkgs/development/python-modules/graph-tool/2.x.x.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python, cairomm, sparsehash, pycairo, autoreconfHook
+{ fetchurl, python, cairomm, sparsehash, pycairo, autoreconfHook
 , pkg-config, boost, expat, scipy, cgal, gmp, mpfr
 , gobject-introspection, pygobject3, gtk3, matplotlib, ncurses
 , buildPythonPackage
@@ -10,18 +10,11 @@
 buildPythonPackage rec {
   pname = "graph-tool";
   format = "other";
-  version = "2.29";
-
-  meta = with stdenv.lib; {
-    description = "Python module for manipulation and statistical analysis of graphs";
-    homepage    = https://graph-tool.skewed.de/;
-    license     = licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.joelmo ];
-  };
+  version = "2.30";
 
   src = fetchurl {
     url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2";
-    sha256 = "0ykzcnqc5bhqb4xlf9ahpp807vj5868xdrmcj6fggqnnpqv4633c";
+    sha256 = "1gy8xhwfms0psdji7vzqjbzj3l0k743aw20db27zxyq89cvz6g42";
   };
 
   configureFlags = [
@@ -55,4 +48,11 @@ buildPythonPackage rec {
   ];
 
   enableParallelBuilding = false;
+
+  meta = with lib; {
+    description = "Python module for manipulation and statistical analysis of graphs";
+    homepage    = "https://graph-tool.skewed.de/";
+    license     = licenses.gpl3;
+    maintainers = [ maintainers.joelmo ];
+  };
 }
diff --git a/pkgs/development/python-modules/graphite-web/default.nix b/pkgs/development/python-modules/graphite-web/default.nix
index 88e3118d4561b..9499a9a6fe2c9 100644
--- a/pkgs/development/python-modules/graphite-web/default.nix
+++ b/pkgs/development/python-modules/graphite-web/default.nix
@@ -1,52 +1,35 @@
-{ stdenv, buildPythonPackage, fetchPypi, isPy3k, which
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
 , django, django_tagging, whisper, pycairo, cairocffi, ldap, memcached, pytz, urllib3, scandir
 }:
-if django.version != "1.8.19"
-|| django_tagging.version != "0.4.3"
-then throw "graphite-web should be build with django_1_8 and django_tagging_0_4_3"
-else buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "graphite-web";
   version = "1.1.6";
 
-  disabled = isPy3k;
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "f4c293008ad588456397cd125cdad7f47f4bab5b6dd82b5fb69f5467e7346a2a";
   };
 
+  patches = [
+    ./update-django-tagging.patch
+  ];
+
   propagatedBuildInputs = [
     django django_tagging whisper pycairo cairocffi
     ldap memcached pytz urllib3 scandir
   ];
 
-  postInstall = ''
-    wrapProgram $out/bin/run-graphite-devel-server.py \
-      --prefix PATH : ${which}/bin
-  '';
+  # Carbon-s default installation is /opt/graphite. This env variable ensures
+  # carbon is installed as a regular python module.
+  GRAPHITE_NO_PREFIX="True";
 
   preConfigure = ''
-    # graphite is configured by storing a local_settings.py file inside the
-    # graphite python package. Since that package is stored in the immutable
-    # Nix store we can't modify it. So how do we configure graphite?
-    #
-    # First of all we rename "graphite.local_settings" to
-    # "graphite_local_settings" so that the settings are not looked up in the
-    # graphite package anymore. Secondly we place a directory containing a
-    # graphite_local_settings.py on the PYTHONPATH in the graphite module
-    # <nixpkgs/nixos/modules/services/monitoring/graphite.nix>.
-    substituteInPlace webapp/graphite/settings.py \
-      --replace "graphite.local_settings" " graphite_local_settings"
-
     substituteInPlace webapp/graphite/settings.py \
       --replace "join(WEBAPP_DIR, 'content')" "join('$out', 'webapp', 'content')"
   '';
 
-  # error: invalid command 'test'
-  doCheck = false;
-
   meta = with stdenv.lib; {
-    homepage = http://graphite.wikidot.com/;
+    homepage = "http://graphiteapp.org/";
     description = "Enterprise scalable realtime graphing";
     maintainers = with maintainers; [ offline basvandijk ];
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/graphite-web/update-django-tagging.patch b/pkgs/development/python-modules/graphite-web/update-django-tagging.patch
new file mode 100644
index 0000000000000..48d16d50f420c
--- /dev/null
+++ b/pkgs/development/python-modules/graphite-web/update-django-tagging.patch
@@ -0,0 +1,12 @@
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py	2020-03-12 18:45:34.654296302 +0100
++++ b/setup.py	2020-03-12 18:46:17.476893828 +0100
+@@ -115,7 +115,7 @@
+         ['templates/*', 'local_settings.py.example']},
+       scripts=glob('bin/*'),
+       data_files=list(webapp_content.items()) + storage_dirs + conf_files + examples,
+-      install_requires=['Django>=1.8,<2.3', 'django-tagging==0.4.3', 'pytz', 'pyparsing', 'cairocffi', 'urllib3', 'scandir', 'six'],
++      install_requires=['Django>=1.8,<2.3', 'django-tagging==0.4.6', 'pytz', 'pyparsing', 'cairocffi', 'urllib3', 'scandir', 'six'],
+       classifiers=[
+           'Intended Audience :: Developers',
+           'Natural Language :: English',
diff --git a/pkgs/development/python-modules/graphitepager/default.nix b/pkgs/development/python-modules/graphitepager/default.nix
deleted file mode 100644
index d2ab8d547fdba..0000000000000
--- a/pkgs/development/python-modules/graphitepager/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, jinja2, markupsafe, pagerduty, pushbullet, python_magic, python-simple-hipchat
-, pyyaml, redis, requests, six, websocket_client, nose
-}:
-buildPythonPackage rec {
-  pname = "graphitepager";
-  version = "0.2.11";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "0v3g1qcgnkpgjzh6phnv13lnk8qjrcs9sq2qg6k0dk5ik31jfk3d";
-  };
-
-  propagatedBuildInputs = [
-    jinja2 markupsafe pagerduty pushbullet python_magic python-simple-hipchat
-    pyyaml redis requests six websocket_client
-  ];
-
-  postPatch = ''
-    substituteInPlace requirements.txt --replace "==" ">="
-  '';
-
-  checkInputs = [ nose ];
-  checkPhase = "nosetests";
-
-  meta = with stdenv.lib; {
-    description = "A simple alerting application for Graphite metrics";
-    homepage = https://github.com/seatgeek/graphite-pager;
-    maintainers = with maintainers; [ offline basvandijk ];
-    license = licenses.bsd2;
-  };
-}
diff --git a/pkgs/development/python-modules/gspread/default.nix b/pkgs/development/python-modules/gspread/default.nix
index 2a20d61048537..cebb48f439431 100644
--- a/pkgs/development/python-modules/gspread/default.nix
+++ b/pkgs/development/python-modules/gspread/default.nix
@@ -5,12 +5,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.1.0";
+  version = "3.3.0";
   pname = "gspread";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f7ce6c06250f694976c3cd4944e3b607b0810b93383839e5b67c7199ce2f0d3d";
+    sha256 = "1nlmg7lnj162nql1acw9z7n1043sk49j11arlfn766i9ykvq6hng";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix
index 87a4a21568c8a..e13cae3396016 100644
--- a/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -1,14 +1,16 @@
-{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, acme, aiohttp, snitun, attrs, pytest-aiohttp, warrant, pytest }:
+{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch
+, acme, aiohttp, snitun, attrs, pycognito, warrant
+, pytest-aiohttp, asynctest, pytest  }:
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.31";
+  version = "0.32.2";
 
   src = fetchFromGitHub {
     owner = "nabucasa";
     repo = pname;
     rev = version;
-    sha256 = "0hxdvdj41gq5ryafjhrcgf6y8l33lyf45a1vgwwbk0q29sir9bnr";
+    sha256 = "1hfi5q222kgbgrj5yvr4lbhca49hcs6sc2yhxc4pjxqsc12bv1f1";
   };
 
   # upstreamed in https://github.com/NabuCasa/hass-nabucasa/pull/119
@@ -17,13 +19,13 @@ buildPythonPackage rec {
     cat setup.py
   '';
 
-  propagatedBuildInputs = [ acme aiohttp snitun attrs warrant ];
+  propagatedBuildInputs = [ acme aiohttp snitun attrs warrant pycognito ];
 
-  checkInputs = [ pytest pytest-aiohttp ];
+  checkInputs = [ pytest pytest-aiohttp asynctest ];
 
   checkPhase = ''
     pytest tests/
-    '';
+  '';
 
   meta = with lib; {
     homepage = "https://github.com/NabuCasa/hass-nabucasa";
diff --git a/pkgs/development/python-modules/httpretty/default.nix b/pkgs/development/python-modules/httpretty/default.nix
index 79c0fbfcac8ad..ee0e598a9ac2f 100644
--- a/pkgs/development/python-modules/httpretty/default.nix
+++ b/pkgs/development/python-modules/httpretty/default.nix
@@ -18,6 +18,10 @@ buildPythonPackage rec {
   pname = "httpretty";
   version = "0.9.7";
 
+  # drop this for version > 0.9.7
+  # Flaky tests: https://github.com/gabrielfalcao/HTTPretty/pull/394
+  doCheck = stdenv.lib.versionAtLeast version "0.9.8";
+
   src = fetchPypi {
     inherit pname version;
     sha256 = "66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe";
diff --git a/pkgs/development/python-modules/icalendar/default.nix b/pkgs/development/python-modules/icalendar/default.nix
index 1d445f83b082e..1418c925ebf8f 100644
--- a/pkgs/development/python-modules/icalendar/default.nix
+++ b/pkgs/development/python-modules/icalendar/default.nix
@@ -7,12 +7,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.0.4";
+  version = "4.0.5";
   pname = "icalendar";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16gjvqv0n05jrb9g228pdjgzd3amz2pdhvcgsn1jypszjg5m2w9l";
+    sha256 = "14ynjj65kfmlcvpb7k097w789wvxncd3cr3xz5m1jz9yl9v6vv5q";
   };
 
   buildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/imapclient/default.nix b/pkgs/development/python-modules/imapclient/default.nix
index e45cdb3eab8a1..ea9bc4844fad6 100644
--- a/pkgs/development/python-modules/imapclient/default.nix
+++ b/pkgs/development/python-modules/imapclient/default.nix
@@ -1,32 +1,35 @@
 { stdenv
 , buildPythonPackage
-, fetchurl
-, isPy34
-, isPy35
+, fetchFromGitHub
 , mock
+, six
 }:
 
 buildPythonPackage rec {
   pname = "IMAPClient";
-  version = "0.13";
-  disabled = isPy34 || isPy35;
+  version = "2.1.0";
 
-  src = fetchurl {
-    url = "https://freshfoo.com/projects/IMAPClient/${pname}-${version}.tar.gz";
-    sha256 = "0v7kd1crdbff0rmh4ddm5qszkis6hpk9084qh94al8h7g4y9l3is";
+  src = fetchFromGitHub {
+    owner = "mjs";
+    repo = "imapclient";
+    rev = version;
+    sha256 = "1zc8qj8ify2zygbz255b6fcg7jhprswf008ccwjmbrnj08kh9l4x";
   };
 
-  buildInputs = [ mock ];
-
-  preConfigure = ''
-    sed -i '/distribute_setup/d' setup.py
-    substituteInPlace setup.py --replace "mock==0.8.0" "mock"
+  # fix test failing in python 36
+  postPatch = ''
+    substituteInPlace tests/test_imapclient.py \
+      --replace "if sys.version_info >= (3, 7):" "if sys.version_info >= (3, 6, 4):"
   '';
 
+  propagatedBuildInputs = [ six ];
+
+  checkInputs = [ mock ];
+
   meta = with stdenv.lib; {
-    homepage = https://imapclient.readthedocs.io/en/2.1.0/;
+    homepage = "https://imapclient.readthedocs.io";
     description = "Easy-to-use, Pythonic and complete IMAP client library";
     license = licenses.bsd3;
+    maintainers = [ maintainers.almac ];
   };
-
 }
diff --git a/pkgs/development/python-modules/jc/default.nix b/pkgs/development/python-modules/jc/default.nix
index 1773a077fdd53..0c4d2062901d5 100644
--- a/pkgs/development/python-modules/jc/default.nix
+++ b/pkgs/development/python-modules/jc/default.nix
@@ -9,12 +9,12 @@
 
 buildPythonPackage rec {
   pname = "jc";
-  version = "1.7.5";
+  version = "1.9.2";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "16ndzvyvx4s3b6cnhxbd5fs3fkc3fwygz7qzaw7ws76sag1zpx67";
+    sha256 = "1zn6skiv5nm7g8cs86n152ni79ck538bwdjynlh8n2k9dvfd5i8l";
   };
 
   propagatedBuildInputs = [ ruamel_yaml ifconfig-parser xmltodict ];
diff --git a/pkgs/development/python-modules/jmespath/default.nix b/pkgs/development/python-modules/jmespath/default.nix
index cc0a78872b2da..848437b453d82 100644
--- a/pkgs/development/python-modules/jmespath/default.nix
+++ b/pkgs/development/python-modules/jmespath/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "jmespath";
-  version = "0.9.4";
+  version = "0.9.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "bde2aef6f44302dfb30320115b17d030798de8c4110e28d5cf6cf91a7a31074c";
+    sha256 = "1nf2ipzvigspy17r16dpkhzn1bqdmlak162rm8dy4wri2n6mr9fc";
   };
 
   buildInputs = [ nose ];
diff --git a/pkgs/development/python-modules/kombu/default.nix b/pkgs/development/python-modules/kombu/default.nix
index 5caab5a377e13..e0ac9e0fc18df 100644
--- a/pkgs/development/python-modules/kombu/default.nix
+++ b/pkgs/development/python-modules/kombu/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "kombu";
-  version = "4.6.7";
+  version = "4.6.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "67b32ccb6fea030f8799f8fd50dd08e03a4b99464ebc4952d71d8747b1a52ad1";
+    sha256 = "0xlv1rsfc3vn22l35csaj939zygd15nzmxbz3bcl981685vxl71d";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/kubernetes/default.nix b/pkgs/development/python-modules/kubernetes/default.nix
index 153398bdd8edc..6827480b9df46 100644
--- a/pkgs/development/python-modules/kubernetes/default.nix
+++ b/pkgs/development/python-modules/kubernetes/default.nix
@@ -17,6 +17,7 @@ buildPythonPackage rec {
     sed -e '/ipaddress/d' -i requirements.txt
   '' else "");
 
+  doCheck = pythonAtLeast "3";
   checkPhase = ''
     py.test
   '';
diff --git a/pkgs/development/python-modules/marshmallow-polyfield/default.nix b/pkgs/development/python-modules/marshmallow-polyfield/default.nix
index cb0b9e9e60d24..3b18c10cbc311 100644
--- a/pkgs/development/python-modules/marshmallow-polyfield/default.nix
+++ b/pkgs/development/python-modules/marshmallow-polyfield/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "marshmallow-polyfield";
-  version = "5.7";
+  version = "5.9";
 
   src = fetchFromGitHub {
     owner = "Bachmann1234";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     marshmallow
   ];
-  
+
   # setuptools check can run, but won't find tests
   checkInputs = [ pytestCheckHook pytestcov ];
 
diff --git a/pkgs/development/python-modules/mask-rcnn/default.nix b/pkgs/development/python-modules/mask-rcnn/default.nix
new file mode 100644
index 0000000000000..e9362f4e077bb
--- /dev/null
+++ b/pkgs/development/python-modules/mask-rcnn/default.nix
@@ -0,0 +1,52 @@
+{ buildPythonPackage
+, cython
+, fetchFromGitHub
+, h5py
+, imgaug
+, ipython
+, Keras
+, lib
+, matplotlib
+, numpy
+, opencv3
+, pillow
+, scikitimage
+, scipy
+, tensorflow
+}:
+
+buildPythonPackage rec {
+  pname = "mask-rcnn";
+  version = "2.1";
+  
+  src = fetchFromGitHub {
+    owner = "matterport";
+    repo = "Mask_RCNN";
+    rev = "3deaec5d902d16e1daf56b62d5971d428dc920bc";
+    sha256 = "13s3q9yh2q9m9vyksd269mww3bni4q2w7q5l419q70ca075qp8zp";
+  };
+
+  nativeBuildInputs = [ cython ];
+
+  propagatedBuildInputs = [
+    h5py
+    imgaug
+    ipython
+    Keras
+    matplotlib
+    numpy
+    opencv3
+    pillow
+    scikitimage
+    scipy
+    tensorflow
+  ];
+
+  meta = with lib; {
+    description = "Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow";
+    homepage = "https://github.com/matterport/Mask_RCNN";
+    license = licenses.mit;
+    maintainers = with maintainers; [ rakesh4g ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/matplotlib/default.nix b/pkgs/development/python-modules/matplotlib/default.nix
index beca4fed17dbb..658388eabae4a 100644
--- a/pkgs/development/python-modules/matplotlib/default.nix
+++ b/pkgs/development/python-modules/matplotlib/default.nix
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     ++ stdenv.lib.optional stdenv.isDarwin [ Cocoa ];
 
   propagatedBuildInputs =
-    [ cycler dateutil nose numpy pyparsing tornado freetype kiwisolver
+    [ cycler dateutil numpy pyparsing tornado freetype kiwisolver
       libpng mock pytz ]
     ++ stdenv.lib.optional (pythonOlder "3.3") backports_functools_lru_cache
     ++ stdenv.lib.optionals enableGtk3 [ cairo pycairo gtk3 gobject-introspection pygobject3 ]
diff --git a/pkgs/development/python-modules/matrix-nio/default.nix b/pkgs/development/python-modules/matrix-nio/default.nix
index f8c1222fb3ff3..9320efc91a237 100644
--- a/pkgs/development/python-modules/matrix-nio/default.nix
+++ b/pkgs/development/python-modules/matrix-nio/default.nix
@@ -20,13 +20,13 @@
 
 buildPythonPackage rec {
   pname = "nio";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "poljar";
     repo = "matrix-nio";
     rev = version;
-    sha256 = "151c59a913y6kx99g7g3mhpgbgavwic1mh21nfrr9x0rm98ilay9";
+    sha256 = "0gqhk9d06w1in6dj7aqy45skzyg8018nmclqd5r0m5nnw8yns6gz";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/mayavi/default.nix b/pkgs/development/python-modules/mayavi/default.nix
index d7a821915f206..ffdf974758370 100644
--- a/pkgs/development/python-modules/mayavi/default.nix
+++ b/pkgs/development/python-modules/mayavi/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "mayavi";
-  version = "4.7.0";
+  version = "4.7.1";
 
   src = fetchPypi {
     inherit pname version;
     extension = "tar.bz2";
-    sha256 = "02rg4j1vkny2piqn3f728kg34m54kgx396g6h5y7ykz2lk3f3h44";
+    sha256 = "095p7mds6kqqrp7xqv24iygr3mw85rm7x41wb5y4yc3gi1pznldy";
   };
 
   # Discovery of 'vtk' in setuptools is not working properly, due to a missing
@@ -30,7 +30,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "3D visualization of scientific data in Python";
-    homepage = https://github.com/enthought/mayavi;
+    homepage = "https://github.com/enthought/mayavi";
     maintainers = with stdenv.lib.maintainers; [ knedlsepp ];
     license = licenses.bsdOriginal;
   };
diff --git a/pkgs/development/python-modules/minidb/default.nix b/pkgs/development/python-modules/minidb/default.nix
index 3a65ef1028af0..a324c8d7d08f1 100644
--- a/pkgs/development/python-modules/minidb/default.nix
+++ b/pkgs/development/python-modules/minidb/default.nix
@@ -5,14 +5,14 @@
 
 buildPythonPackage rec {
   pname = "minidb";
-  version = "2.0.2";
+  version = "2.0.3";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "thp";
     repo = "minidb";
     rev = version;
-    sha256 = "14y5vf8vhgviczhzy9h3xv99fjvrg975nz4w1fj5c1jv37da1lq3";
+    sha256 = "0c6y3x957pc5sxkl34lymhkwpn4nlsfw07fcv4y9p2zdb7kjd1gc";
   };
 
   # module imports are incompatible with python2
diff --git a/pkgs/development/python-modules/mkl-service/default.nix b/pkgs/development/python-modules/mkl-service/default.nix
index ad3f30a66daa7..c8531299620ef 100644
--- a/pkgs/development/python-modules/mkl-service/default.nix
+++ b/pkgs/development/python-modules/mkl-service/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "mkl-service";
-  version = "2.1.0";
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "IntelPython";
     repo = "mkl-service";
     rev = "v${version}";
-    sha256 = "1bnpgx629rxqf0yhn0jn68ypj3dqv6njc3981j1g8j8rsm5lycrn";
+    sha256 = "1b4dkkl439rfaa86ywzc2zf9ifawhvdlaiqcg0il83cn5bzs7g5z";
   };
 
   MKLROOT = mkl;
diff --git a/pkgs/development/python-modules/mypy/default.nix b/pkgs/development/python-modules/mypy/default.nix
index 90b00ba17179c..bcd0ab4a6c626 100644
--- a/pkgs/development/python-modules/mypy/default.nix
+++ b/pkgs/development/python-modules/mypy/default.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "mypy";
-  version = "0.761";
+  version = "0.770";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1gw7h84d21wmi267kmgqs9whz0l7rp62pzja2f31wq7cfj6spfl5";
+    sha256 = "1bm40nx9g1n4nj1309cijnh0ns4qbhym3agyl537nc4vxw3paqla";
   };
 
   propagatedBuildInputs = [ typed-ast psutil mypy-extensions typing-extensions ];
diff --git a/pkgs/development/python-modules/nest-asyncio/default.nix b/pkgs/development/python-modules/nest-asyncio/default.nix
index 12412860f8804..dbbbc04d1413c 100644
--- a/pkgs/development/python-modules/nest-asyncio/default.nix
+++ b/pkgs/development/python-modules/nest-asyncio/default.nix
@@ -5,16 +5,16 @@
 }:
 
 buildPythonPackage rec {
-  version = "1.2.3";
+  version = "1.3.0";
   pname = "nest_asyncio";
   disabled = !(pythonAtLeast "3.5");
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0fznrg32rk6fmvpfdxwwhadh526gdjivmdifg2hiciil2gr8n1s3";
+    sha256 = "1cbd885n3sf4qg1dv3mk1ggr5ssk48yzrzssznr92dh53g04ly7g";
   };
 
-  # tests not packaged with source dist as of 1.2.3/1.2.3, and
+  # tests not packaged with source dist as of 1.3.0/1.3.0, and
   # can't check tests out of GitHub easily without specific commit IDs (no tagged releases)
   doCheck = false;
   pythonImportsCheck = [ "nest_asyncio" ];
diff --git a/pkgs/development/python-modules/nilearn/default.nix b/pkgs/development/python-modules/nilearn/default.nix
index a379f236f3f0b..4a92ec7109d16 100644
--- a/pkgs/development/python-modules/nilearn/default.nix
+++ b/pkgs/development/python-modules/nilearn/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytest
+{ stdenv, buildPythonPackage, fetchPypi, pytest, nose
 , nibabel, numpy, pandas, scikitlearn, scipy, matplotlib, joblib }:
 
 buildPythonPackage rec {
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     pytest nilearn/tests -k 'not test_cache_mixin_with_expand_user'  # accesses ~/
   '';
 
-  checkInputs = [ pytest ];
+  checkInputs = [ pytest nose ];
 
   propagatedBuildInputs = [
     joblib
diff --git a/pkgs/development/python-modules/ntlm-auth/default.nix b/pkgs/development/python-modules/ntlm-auth/default.nix
index e4bbe0fb4302b..14900d5c55db0 100644
--- a/pkgs/development/python-modules/ntlm-auth/default.nix
+++ b/pkgs/development/python-modules/ntlm-auth/default.nix
@@ -3,22 +3,23 @@
 , fetchFromGitHub
 , mock
 , pytest
+, requests
 , unittest2
 , six
 }:
 
 buildPythonPackage rec {
   pname = "ntlm-auth";
-  version = "1.0.3";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "jborean93";
     repo = "ntlm-auth";
     rev = "v${version}";
-    sha256 = "09f2g4ivfi9lh1kr30hlg0q4n2imnvmd79w83gza11q9nmhhiwpz";
+    sha256 = "168k3ygwbvnfcwn7q1nv3vvy6b9jc4cnpix0xgg5j8av7v1x0grn";
   };
 
-  checkInputs = [ mock pytest unittest2 ];
+  checkInputs = [ mock pytest requests unittest2 ];
   propagatedBuildInputs = [ six ];
 
   # Functional tests require networking
@@ -28,8 +29,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Calculates NTLM Authentication codes";
-    homepage = https://github.com/jborean93/ntlm-auth;
-    license = licenses.lgpl3;
+    homepage = "https://github.com/jborean93/ntlm-auth";
+    license = licenses.mit;
     maintainers = with maintainers; [ elasticdog ];
     platforms = platforms.all;
   };
diff --git a/pkgs/development/python-modules/opuslib/default.nix b/pkgs/development/python-modules/opuslib/default.nix
new file mode 100644
index 0000000000000..aa7fc4add4935
--- /dev/null
+++ b/pkgs/development/python-modules/opuslib/default.nix
@@ -0,0 +1,39 @@
+{ buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  libopus,
+  nose,
+  stdenv,
+  substituteAll,
+}:
+
+buildPythonPackage rec {
+  pname = "opuslib";
+  version = "3.0.3";
+
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "orion-labs";
+    repo = "opuslib";
+    rev = "92109c528f9f6c550df5e5325ca0fcd4f86b0909";
+    sha256 = "0kd37wimwd1g6c0w5hq2hiiljgbi1zg3rk5prval086khkzq469p";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./opuslib-paths.patch;
+      opusLibPath = "${libopus}/lib/libopus${stdenv.hostPlatform.extensions.sharedLibrary}";
+    })
+  ];
+
+  checkInputs = [ nose ];
+
+  meta = with stdenv.lib; {
+    description = "Python bindings to the libopus, IETF low-delay audio codec";
+    homepage = "https://github.com/orion-labs/opuslib";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ thelegy ];
+  };
+}
diff --git a/pkgs/development/python-modules/opuslib/opuslib-paths.patch b/pkgs/development/python-modules/opuslib/opuslib-paths.patch
new file mode 100644
index 0000000000000..fd2cfc8dbde22
--- /dev/null
+++ b/pkgs/development/python-modules/opuslib/opuslib-paths.patch
@@ -0,0 +1,26 @@
+diff --git a/opuslib/api/__init__.py b/opuslib/api/__init__.py
+index 323a2a4..4c8a8fe 100644
+--- a/opuslib/api/__init__.py
++++ b/opuslib/api/__init__.py
+@@ -7,20 +7,12 @@
+
+ import ctypes  # type: ignore
+
+-from ctypes.util import find_library  # type: ignore
+-
+ __author__ = 'Никита Кузнецов <self@svartalf.info>'
+ __copyright__ = 'Copyright (c) 2012, SvartalF'
+ __license__ = 'BSD 3-Clause License'
+
+
+-lib_location = find_library('opus')
+-
+-if lib_location is None:
+-    raise Exception(
+-        'Could not find Opus library. Make sure it is installed.')
+-
+-libopus = ctypes.CDLL(lib_location)
++libopus = ctypes.CDLL('@opusLibPath@')
+
+ c_int_pointer = ctypes.POINTER(ctypes.c_int)
+ c_int16_pointer = ctypes.POINTER(ctypes.c_int16)
diff --git a/pkgs/development/python-modules/pandas/default.nix b/pkgs/development/python-modules/pandas/default.nix
index de046d942c83d..d0e932dec1bc6 100644
--- a/pkgs/development/python-modules/pandas/default.nix
+++ b/pkgs/development/python-modules/pandas/default.nix
@@ -30,11 +30,11 @@ let
 
 in buildPythonPackage rec {
   pname = "pandas";
-  version = "1.0.1";
+  version = "1.0.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3c07765308f091d81b6735d4f2242bb43c332cc3461cae60543df6b10967fe27";
+    sha256 = "11j5s6hz29yh3rwa2rjgric0knbhp9shphd4i7hx00xr5wr2xx1j";
   };
 
   checkInputs = [ pytest glibcLocales moto hypothesis ];
@@ -67,6 +67,12 @@ in buildPythonPackage rec {
                 "['pandas/src/klib', 'pandas/src', '$cpp_sdk']"
   '';
 
+  setupPyBuildFlags = [
+    # As suggested by
+    # https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#creating-a-python-environment
+    "--parallel=$NIX_BUILD_CORES"
+  ];
+
 
   disabledTests = stdenv.lib.concatMapStringsSep " and " (s: "not " + s) ([
     # since dateutil 0.6.0 the following fails: test_fallback_plural, test_ambiguous_flags, test_ambiguous_compat
diff --git a/pkgs/development/python-modules/pastel/default.nix b/pkgs/development/python-modules/pastel/default.nix
index 532970c62c28f..a44b4253ca562 100644
--- a/pkgs/development/python-modules/pastel/default.nix
+++ b/pkgs/development/python-modules/pastel/default.nix
@@ -1,24 +1,21 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pytest }:
+{ lib, buildPythonPackage, fetchPypi, poetry, pytest }:
 
 buildPythonPackage rec {
   pname = "pastel";
-  version = "0.1.0";
+  version = "0.2.0";
 
-  # No tests in PyPi tarball
-  src = fetchFromGitHub {
-    owner = "sdispater";
-    repo = "pastel";
-    rev = version;
-    sha256 = "1b4ag7jr7j0sxly5g29imdq8g0d4ixhbck55dblr45mlsidydx0s";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0dnaw44ss10i10z4ksy0xljknvjap7rb7g0b8p6yzm5x4g2my5a6";
   };
 
   checkInputs = [ pytest ];
   checkPhase = ''
-    pytest tests -sq
+    pytest
   '';
 
   meta = with lib; {
-    homepage = https://github.com/sdispater/pastel;
+    homepage = "https://github.com/sdispater/pastel";
     description = "Bring colors to your terminal";
     license = licenses.mit;
     maintainers = with maintainers; [ jakewaksbaum ];
diff --git a/pkgs/development/python-modules/patch-ng/default.nix b/pkgs/development/python-modules/patch-ng/default.nix
new file mode 100644
index 0000000000000..726df160929da
--- /dev/null
+++ b/pkgs/development/python-modules/patch-ng/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+  version = "1.17.2"; # note: `conan` package may require a hardcoded one
+  pname = "patch-ng";
+
+  src = fetchurl {
+    url = "mirror://pypi/p/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "02nadk70sk51liv0qav88kx8rzfdjc1x52023zayanz44kkcjl2i";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Library to parse and apply unified diffs.";
+    homepage = "https://github.com/conan-io/python-patch";
+    license = licenses.mit;
+    maintainers = with maintainers; [ HaoZeke ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pid/default.nix b/pkgs/development/python-modules/pid/default.nix
index 20e9390861dcf..8e45c43954d6c 100644
--- a/pkgs/development/python-modules/pid/default.nix
+++ b/pkgs/development/python-modules/pid/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pid";
-  version = "2.2.5";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "96eb7dba326b88f5164bc1afdc986c7793e0d32d7f62366256a3903c7b0614ef";
+    sha256 = "0pdp8h1m4brxalcsmzzzmjj66vj98g6wigwmcdj5sf8p7insklgn";
   };
 
   buildInputs = [ nose ];
@@ -20,7 +20,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Pidfile featuring stale detection and file-locking";
-    homepage = https://github.com/trbs/pid/;
+    homepage = "https://github.com/trbs/pid/";
     license = licenses.asl20;
   };
 
diff --git a/pkgs/development/python-modules/pip-tools/default.nix b/pkgs/development/python-modules/pip-tools/default.nix
index 0a8d679ae5f90..20a42cddcf9cc 100644
--- a/pkgs/development/python-modules/pip-tools/default.nix
+++ b/pkgs/development/python-modules/pip-tools/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "pip-tools";
-  version = "4.3.0";
+  version = "4.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0x36mp3a3f3wandfc0g8d53gg2jkc14nhisbryzspcl9f05sbvq6";
+    sha256 = "166crncd9zrk9wgk9dss9968mx2c1dzj80sjnaqrcmw7a7j30gv9";
   };
 
   LC_ALL = "en_US.UTF-8";
@@ -27,6 +27,7 @@ buildPythonPackage rec {
     "test_generate_hashes_with_editable"
     "test_generate_hashes_with_url"
     "test_generate_hashes_without_interfering_with_each_other"
+    "test_get_file_hash_without_interfering_with_each_other"
     "test_get_hashes_local_repository_cache_miss"
     "test_realistic_complex_sub_dependencies"
     "test_stdin"
diff --git a/pkgs/development/python-modules/plumbum/default.nix b/pkgs/development/python-modules/plumbum/default.nix
index d24b2dcafda8b..796f94184978c 100644
--- a/pkgs/development/python-modules/plumbum/default.nix
+++ b/pkgs/development/python-modules/plumbum/default.nix
@@ -5,7 +5,7 @@
 
 buildPythonPackage rec {
   pname = "plumbum";
-  version = "1.6.8";
+  version = "1.6.9";
 
   checkInputs = [ pytest ];
 
@@ -14,6 +14,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "14mbyvc1y25lr72n1zh9ym5ngify7zdr57lxahidq03ycpwz4wc5";
+    sha256 = "1ps37vamqav6p277dlp51jnacd5q4x4z1x8y0nfjw3y8jsfy3f8n";
   };
 }
\ No newline at end of file
diff --git a/pkgs/development/python-modules/poetry/default.nix b/pkgs/development/python-modules/poetry/default.nix
index 2828cb6b3f975..481fd2c5feb7f 100644
--- a/pkgs/development/python-modules/poetry/default.nix
+++ b/pkgs/development/python-modules/poetry/default.nix
@@ -31,12 +31,12 @@ let
 
 in buildPythonPackage rec {
   pname = "poetry";
-  version = "1.0.3";
+  version = "1.0.5";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0fx1ilgkrsqjjnpgv5zljsp0wpcsywdqvvi8im9z396qq6qpk830";
+    sha256 = "02h387k0xssvv78yy82pcpknpq4w5ym2in1zl8cg9r5wljl5w6cf";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pproxy/default.nix b/pkgs/development/python-modules/pproxy/default.nix
new file mode 100644
index 0000000000000..9f97d7df13560
--- /dev/null
+++ b/pkgs/development/python-modules/pproxy/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, isPy27
+, buildPythonPackage
+, fetchFromGitHub
+, pycryptodome
+, uvloop
+}:
+
+buildPythonPackage rec {
+  pname = "pproxy";
+  version = "2.3.2";
+
+  disabled = isPy27;
+
+  # doesn't use tagged releases. Tests not in PyPi versioned releases
+  src = fetchFromGitHub {
+    owner = "qwj";
+    repo = "python-proxy";
+    rev = "818ab9cc10565789fe429a7be50ddefb9c583781";
+    sha256 = "0g3cyi5lzakhs5p3fpwywbl8jpapnr8890zw9w45dqg8k0svc1fi";
+  };
+
+  propagatedBuildInputs = [
+    pycryptodome
+    uvloop
+  ];
+
+  pythonImportsCheck = [ "pproxy" ];
+  disabledTests = [ "api_server" "api_client" ];  # try to connect to outside Internet, so disabled
+  # test suite doesn't use test runner. so need to run ``python ./tests/*``
+  checkPhase = ''
+    shopt -s extglob
+    for f in ./tests/!(${builtins.concatStringsSep "|" disabledTests}).py ; do
+      echo "***Testing $f***"
+      eval "python $f"
+    done
+  '';
+
+  meta = with lib; {
+    description = "Proxy server that can tunnel among remote servers by regex rules";
+    homepage = "https://github.com/qwj/python-proxy";
+    license = licenses.mit;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/pkgs/development/python-modules/prompt_toolkit/default.nix b/pkgs/development/python-modules/prompt_toolkit/default.nix
index dd3c8d16a51e9..4ef7f2213664c 100644
--- a/pkgs/development/python-modules/prompt_toolkit/default.nix
+++ b/pkgs/development/python-modules/prompt_toolkit/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "prompt_toolkit";
-  version = "2.0.10";
+  version = "3.0.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1nr990i4b04rnlw1ghd0xmgvvvhih698mb6lb6jylr76cs7zcnpi";
+    sha256 = "10wpsbl1mmnvm8q63zs40633kbq93bidx4vz1p2q92w8ijqb3rpb";
   };
   checkPhase = ''
     py.test -k 'not test_pathcompleter_can_expanduser'
diff --git a/pkgs/development/python-modules/protego/default.nix b/pkgs/development/python-modules/protego/default.nix
new file mode 100644
index 0000000000000..ad7e4aa4af6e1
--- /dev/null
+++ b/pkgs/development/python-modules/protego/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "Protego";
+  version = "0.1.16";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a682771bc7b51b2ff41466460896c1a5a653f9a1e71639ef365a72e66d8734b4";
+  };
+  propagatedBuildInputs = [ six ];
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    pytest tests
+  '';
+
+  meta = with lib; {
+    description = "A pure-Python robots.txt parser with support for modern conventions";
+    homepage = "https://github.com/scrapy/protego";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/pkgs/development/python-modules/ptpython/default.nix b/pkgs/development/python-modules/ptpython/default.nix
index 01f9dda8f2c10..f5a37dda630d6 100644
--- a/pkgs/development/python-modules/ptpython/default.nix
+++ b/pkgs/development/python-modules/ptpython/default.nix
@@ -1,16 +1,17 @@
-{ stdenv, buildPythonPackage, fetchPypi, prompt_toolkit, docopt , jedi, pygments, isPy3k }:
+{ stdenv, buildPythonPackage, fetchPypi, prompt_toolkit, appdirs, docopt, jedi
+, pygments, isPy3k }:
 
 buildPythonPackage rec {
   pname = "ptpython";
-  version = "2.0.6";
+  version = "3.0.1";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "90e24040e82de4abae0bbe6e352d59ae6657e14e1154e742c0038679361b052f";
+    sha256 = "a69cce0aa04f0075e2e65287a0ee2f3a928c0591b301ce22aa2e498af1ebcb4b";
   };
 
-  propagatedBuildInputs = [ prompt_toolkit docopt jedi pygments ];
+  propagatedBuildInputs = [ appdirs prompt_toolkit docopt jedi pygments ];
 
   # no tests to run
   doCheck = false;
diff --git a/pkgs/development/python-modules/py-cpuinfo/default.nix b/pkgs/development/python-modules/py-cpuinfo/default.nix
index c90f81ae28f8f..ae2f5ae9d6db7 100644
--- a/pkgs/development/python-modules/py-cpuinfo/default.nix
+++ b/pkgs/development/python-modules/py-cpuinfo/default.nix
@@ -6,13 +6,13 @@
 
 buildPythonPackage rec {
   pname = "py-cpuinfo";
-  version = "4.0.0";
+  version = "5.0.0";
 
   src = fetchFromGitHub {
      owner = "workhorsy";
      repo = pname;
      rev = "v${version}";
-     sha256 = "1pp561lj80jnvr2038nrzhmks2akxsbdqxvfrqa6n340x81981lm";
+     sha256 = "0lxl9n6djaz5h1zrb2jca4qwl41c2plxy8chr7yhcxnzg0srddqi";
   };
 
   checkInputs = [
@@ -27,7 +27,14 @@ buildPythonPackage rec {
 
   meta = {
     description = "Get CPU info with pure Python 2 & 3";
-    homepage = https://github.com/workhorsy/py-cpuinfo;
+    longDescription = ''
+      Py-cpuinfo gets CPU info with pure Python and should work without any
+      extra programs or libraries, beyond what your OS provides. It does not
+      require any compilation (C/C++, assembly, etc.) to use and works with
+      Python 2 and 3.
+    '';
+    inherit (src.meta) homepage;
+    changelog = "https://github.com/workhorsy/py-cpuinfo/blob/v${version}/ChangeLog";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ costrouc ];
   };
diff --git a/pkgs/development/python-modules/pyarrow/default.nix b/pkgs/development/python-modules/pyarrow/default.nix
index ab05f49ac38fe..6d51729e0c328 100644
--- a/pkgs/development/python-modules/pyarrow/default.nix
+++ b/pkgs/development/python-modules/pyarrow/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, futures, hypothesis, numpy, pandas, pytest, pytest-lazy-fixture, pkgconfig, setuptools_scm, six }:
+{ lib, fetchpatch, buildPythonPackage, python, isPy3k, arrow-cpp, cmake, cython, futures, hypothesis, numpy, pandas, pytest, pytest-lazy-fixture, pkgconfig, setuptools_scm, six }:
 
 let
   _arrow-cpp = arrow-cpp.override { inherit python; };
@@ -9,6 +9,16 @@ buildPythonPackage rec {
 
   inherit (_arrow-cpp) version src;
 
+  patches = [
+    # Remove when updating pkgs.arrow-cpp to 0.17
+    (fetchpatch {
+      name = "ARROW-8106-fix-conversion-test";
+      url = "https://github.com/apache/arrow/commit/af20bbff30adc560d7e57dd921345d00cc8b870c.patch";
+      sha256 = "0ihpw589vh35va31ajzy5zpx3bqd9gdn3342rghi03r245kch9zd";
+      stripLen = 1;
+    })
+  ];
+
   sourceRoot = "apache-arrow-${version}/python";
 
   nativeBuildInputs = [ cmake cython pkgconfig setuptools_scm ];
diff --git a/pkgs/development/python-modules/pychromecast/default.nix b/pkgs/development/python-modules/pychromecast/default.nix
index 9ce934c84676b..4939cd18e43a7 100644
--- a/pkgs/development/python-modules/pychromecast/default.nix
+++ b/pkgs/development/python-modules/pychromecast/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "PyChromecast";
-  version = "4.1.1";
+  version = "4.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "13cxyxs0cl2cwbx1fkw6b26hrzpllx1wfq2q58fx298yjn3niiby";
+    sha256 = "05h7ncymyh1715v2jkj312qza5qlqrz6yfpgyv4kdf1m07zh7pxh";
   };
 
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/pycognito/default.nix b/pkgs/development/python-modules/pycognito/default.nix
new file mode 100644
index 0000000000000..afc607baa4057
--- /dev/null
+++ b/pkgs/development/python-modules/pycognito/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, cryptography
+, boto3
+, envs
+, python-jose
+, requests
+, mock
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "pycognito";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "pvizeli";
+    repo = "pycognito";
+    rev = version;
+    sha256 = "01zns522awm5yp5cbk1y7k7px534i5akiivip709i1naph3hvnfk";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace 'python-jose[cryptography]' 'python-jose'
+  '';
+
+  propagatedBuildInputs = [
+    boto3
+    envs
+    python-jose
+    requests
+  ];
+
+  disabled = isPy27;
+
+  checkInputs = [ mock ];
+
+  meta = with lib; {
+    description = "Python class to integrate Boto3's Cognito client so it is easy to login users. With SRP support";
+    homepage = "https://GitHub.com/pvizeli/pycognito";
+    license = licenses.asl20;
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyglet/default.nix b/pkgs/development/python-modules/pyglet/default.nix
index e6be92c0efb52..a37872d909450 100644
--- a/pkgs/development/python-modules/pyglet/default.nix
+++ b/pkgs/development/python-modules/pyglet/default.nix
@@ -11,6 +11,7 @@
 , gdk-pixbuf
 , fontconfig
 , freetype
+, ffmpeg-full
 }:
 
 buildPythonPackage rec {
@@ -52,6 +53,8 @@ buildPythonPackage rec {
                 path = '${fontconfig.lib}/lib/libfontconfig${ext}'
             elif name == 'freetype':
                 path = '${freetype}/lib/libfreetype${ext}'
+            elif name[0:2] == 'av' or name[0:2] == 'sw':
+                path = '${ffmpeg-full}/lib/lib' + name + '${ext}'
             if path is not None:
                 return ctypes.cdll.LoadLibrary(path)
         raise Exception("Could not load library {}".format(names))
diff --git a/pkgs/development/python-modules/pyhcl/default.nix b/pkgs/development/python-modules/pyhcl/default.nix
index e409282980d6b..b40305c0dce29 100644
--- a/pkgs/development/python-modules/pyhcl/default.nix
+++ b/pkgs/development/python-modules/pyhcl/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pyhcl";
-  version = "0.4.0";
+  version = "0.4.1";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "virtuald";
     repo = pname;
     rev = version;
-    sha256 = "09kwm3digbwn3kmbk76jswxgwfcfchik6cfa2xbhjanh4xs893hs";
+    sha256 = "13nszg2plfvza3syki1rxnx3k3h90qq4wkgv86l1xpz31k3pf6k4";
   };
 
   # https://github.com/virtuald/pyhcl/blob/51a7524b68fe21e175e157b8af931016d7a357ad/setup.py#L64
diff --git a/pkgs/development/python-modules/pyhepmc/default.nix b/pkgs/development/python-modules/pyhepmc/default.nix
deleted file mode 100644
index 26a91a313ee44..0000000000000
--- a/pkgs/development/python-modules/pyhepmc/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, fetchFromBitbucket
-, isPy3k
-, pkgs
-, python
-}:
-
-buildPythonPackage rec {
-  pname = "pyhepmc";
-  version = "1.0.1";
-  disabled = isPy3k;
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "1210fd7e20d4abc1d9166147a9f7645a2a58b655fe030ad54ab3ea0d0c6e0834";
-  };
-
-  srcMissing = fetchFromBitbucket {
-    owner = "andybuckley";
-    repo = "pyhepmc";
-    rev = "pyhepmc-1.0.0";
-    sha256 = "0vxad143pz45q94w5p0dycpk24insdsv1m5k867y56xy24bi0d4w";
-  };
-
-  prePatch = ''
-    cp -r $srcMissing/hepmc .
-    chmod +w hepmc
-  '';
-
-  patches = [
-    # merge PR https://bitbucket.org/andybuckley/pyhepmc/pull-requests/1/add-incoming-outgoing-generators-for/diff
-    ./pyhepmc_export_edges.patch
-    # add bindings to Flow class
-    ./pyhepmc_export_flow.patch
-  ];
-
-  # regenerate python wrapper
-  preConfigure = ''
-    swig -c++ -I${pkgs.hepmc}/include -python hepmc/hepmcwrap.i
-  '';
-
-  nativeBuildInputs = [ pkgs.swig ];
-  buildInputs = [ pkgs.hepmc2 ];
-
-  HEPMCPATH = pkgs.hepmc2;
-
-  checkPhase = ''
-    ${python.interpreter} test/test1.py
-  '';
-
-  meta = with stdenv.lib; {
-    description = "A simple wrapper on the main classes of the HepMC event simulation representation, making it possible to create, read and manipulate HepMC events from Python code";
-    license     = licenses.gpl2;
-    maintainers = with maintainers; [ veprbl ];
-  };
-
-}
diff --git a/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch b/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch
deleted file mode 100644
index 5c6e56566a34d..0000000000000
--- a/pkgs/development/python-modules/pyhepmc/pyhepmc_export_edges.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-# HG changeset patch
-# User Lukas Heinrich <lukas.heinrich@gmail.com>
-# Date 1430606843 14400
-# Node ID 325f89b7b72922e9add9ca9dd0f7ca4a6c83bf00
-# Parent  e4fd953257e0d38511f2177de7ffaef662358af2
-add incoming/outgoing generators for GenVertex
-
-diff --git a/hepmc/generators.i b/hepmc/generators.i
-new file mode 100644
---- /dev/null
-+++ b/hepmc/generators.i
-@@ -0,0 +1,171 @@
-+/*!
-+ * \file   generators.i
-+ * \author Seth R. Johnson
-+ * \brief  Define generator/iterator for any type
-+
-+Example:
-+\code
-+    SETUP_GENERATOR( std::vector<Cell>::const_iterator )
-+    ADD_GENERATOR( Mesh, cells,
-+    std::vector<Cell>::const_iterator, Cell, beginCells, endCells)
-+\endcode
-+would be a method to add a \c cells generator method method to the Python class
-+\c Mesh, when the C++ class \c Mesh has a \c std::vector<Cell> accessed through
-+methods \c beginCells and \c endCells.
-+
-+The macro \c ADD_GENERATOR_P would be if the underlying storage were \c
-+std::vector<Cell*> instead.
-+
-+Alternatively, for containers of regular objects that provide \c begin(), \c end(), and \c const_iterator, you can use the \c ADD_CONTAINER_ITERATOR macro:
-+\code
-+ADD_CONTAINER_ITERATOR( QuadratureSet )
-+\endcode
-+
-+\section License
-+
-+Copyright (c) 2010, Seth R. Johnson
-+All rights reserved.
-+
-+Redistribution and use in source and binary forms, with or without
-+modification, are permitted provided that the following conditions are met:
-+ * Redistributions of source code must retain the above copyright notice, this
-+   list of conditions and the following disclaimer.
-+ * Redistributions in binary form must reproduce the above copyright notice,
-+   this list of conditions and the following disclaimer in the documentation
-+   and/or other materials provided with the distribution.
-+ * Neither the name of the this project nor the names of its contributors
-+   may be used to endorse or promote products derived from this software
-+   without specific prior written permission.
-+
-+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+ This material is based upon work supported under a National Science
-+ Foundation Graduate Research Fellowship. Any opinions, findings, conclusions
-+ or recommendations expressed in this publication are those of the author
-+ and do not necessarily reflect the views of the National Science
-+ Foundation.
-+*/
-+#ifndef tools_SWIG_generators_i
-+#define tools_SWIG_generators_i
-+/*----------------------------------------------------------------------------*/
-+
-+// Add a Python class to provide iterator objects
-+%insert("python") %{
-+class GenericIterator:
-+    def __init__(self, begin_iter_method, deref_method, incr_method):
-+        self.it = begin_iter_method()
-+        self.incr   = incr_method
-+        self.deref  = deref_method
-+
-+    def __iter__(self):
-+        return self
-+
-+    def next(self):
-+        obj = self.deref( self.it )
-+        if obj is not None:
-+            self.incr( self.it )
-+            return obj
-+        else:
-+            raise StopIteration
-+%}
-+
-+//============== GENERIC GENERATOR/ITERATOR WRAPPER SUPPORT ============
-+//! Thin wrapper for incrementing a certain type of iterator
-+// only need to define once per iterator type, and we can use the same name
-+// thanks to overloading (even though this may decrease efficiency)
-+%define SETUP_GENERATOR( ITERATOR... )
-+%inline %{
-+void _iter_incr( ITERATOR* iter )
-+{
-+    ++(*iter);
-+}
-+%}
-+%enddef
-+
-+/*----------------------------------------------------------------------------*/
-+// Internal method for adding common parts of the generator
-+%define PYTRT_BASE_ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, CBEGIN )
-+    %extend CLASS {
-+%insert("python") %{
-+    def PYMETHOD(self):
-+        "Returns an iterator for PYMETHOD."
-+        return GenericIterator(
-+                self._begin_ ## PYMETHOD,
-+                self._deref_ ## PYMETHOD,
-+                _iter_incr
-+                 )
-+%}
-+// get the first element in the vector
-+ITERATOR* _begin_ ## PYMETHOD()
-+{
-+    return new ITERATOR( ($self)->CBEGIN() );
-+}
-+    }
-+%enddef
-+/*----------------------------------------------------------------------------*/
-+// If the dereferenced iterator is an object
-+%define ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, RVALUE, CBEGIN, CEND )
-+
-+// add the python and begin method
-+PYTRT_BASE_ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, CBEGIN )
-+
-+    %extend CLASS {
-+//! Dereference the iterator; return NULL if at the end
-+const RVALUE* _deref_ ## PYMETHOD ## ( const ITERATOR* iter )
-+{
-+    // if at the end, return NULL
-+    if (*iter == ($self)->CEND() ) {
-+        return NULL;
-+    }
-+    // otherwise, return the POINTER to the dereferenced iterator
-+    return &(**iter);
-+}
-+    }
-+%enddef
-+/*----------------------------------------------------------------------------*/
-+// If the dereferenced iterator is a pointer
-+%define ADD_GENERATOR_P( CLASS, PYMETHOD, ITERATOR, RVALUE, CBEGIN, CEND )
-+
-+// add the python and begin method
-+PYTRT_BASE_ADD_GENERATOR( CLASS, PYMETHOD, ITERATOR, CBEGIN )
-+
-+    %extend CLASS {
-+//! Dereference the iterator; return NULL if at the end
-+const RVALUE* _deref_ ## PYMETHOD ## ( const ITERATOR* iter )
-+{
-+    // if at the end, return NULL
-+    if (*iter == ($self)->CEND() ) {
-+        return NULL;
-+    }
-+    // otherwise, return the dereferenced iterator (a pointer)
-+    return **iter;
-+}
-+    }
-+%enddef
-+/*----------------------------------------------------------------------------*/
-+//! For a regular container with "begin" and "end" and "size"
-+%define ADD_CONTAINER_ITERATOR( CLASS )
-+    SETUP_GENERATOR( CLASS::const_iterator );
-+    ADD_GENERATOR( CLASS, __iter__,
-+            CLASS ## ::const_iterator, CLASS ## ::value_type,
-+            begin, end)
-+    %extend CLASS {
-+    %insert("python") %{
-+    def __len__(self):
-+        return self.size()
-+    %}
-+    }
-+%enddef
-+
-+/*============================================================================*/
-+#endif
-+
-diff --git a/hepmc/hepmcwrap.i b/hepmc/hepmcwrap.i
---- a/hepmc/hepmcwrap.i
-+++ b/hepmc/hepmcwrap.i
-@@ -1,5 +1,7 @@
- %module hepmcwrap
- 
-+%include generators.i
-+
- %{
-   #include "HepMC/GenEvent.h"
-   #include "HepMC/GenVertex.h"
-@@ -251,3 +253,9 @@
-     return ss.str();
-   }
- }
-+
-+SETUP_GENERATOR( std::vector< HepMC::GenParticle* >::const_iterator )
-+ADD_GENERATOR_P( HepMC::GenVertex, incoming,
-+std::vector< HepMC::GenParticle* >::const_iterator, HepMC::GenParticle, particles_in_const_begin, particles_in_const_end)
-+ADD_GENERATOR_P( HepMC::GenVertex, outgoing,
-+std::vector< HepMC::GenParticle* >::const_iterator, HepMC::GenParticle, particles_out_const_begin, particles_out_const_end)
diff --git a/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch b/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch
deleted file mode 100644
index 85e26a1a16077..0000000000000
--- a/pkgs/development/python-modules/pyhepmc/pyhepmc_export_flow.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/hepmc/hepmcwrap.i b/hepmc/hepmcwrap.i
-index cf35c1b..b94fbe2 100644
---- a/hepmc/hepmcwrap.i
-+++ b/hepmc/hepmcwrap.i
-@@ -1,6 +1,7 @@
- %module hepmcwrap
- 
- %{
-+  #include "HepMC/Flow.h"
-   #include "HepMC/GenEvent.h"
-   #include "HepMC/GenVertex.h"
-   #include "HepMC/GenParticle.h"
-@@ -93,6 +94,7 @@ namespace HepMC {
- // headers before importing headers that use those classes.
- // Result is that headers should probably be %included in an order
- // which sees "contents before containers"
-+%include "HepMC/Flow.h"
- %include "HepMC/HepMCDefs.h"
- %include "HepMC/SimpleVector.h"
- // #ifdef HEPMC_HAS_ITERATOR_RANGES
diff --git a/pkgs/development/python-modules/pyicloud/default.nix b/pkgs/development/python-modules/pyicloud/default.nix
index 7bc52f74701cc..20fd48bcb2bd1 100644
--- a/pkgs/development/python-modules/pyicloud/default.nix
+++ b/pkgs/development/python-modules/pyicloud/default.nix
@@ -15,11 +15,11 @@
 
 buildPythonPackage rec {
   pname = "pyicloud";
-  version = "0.9.4";
+  version = "0.9.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0r171wnq2g5bw7gd59vh6flm0104ix1a6s2vhdrf8s74hipw57si";
+    sha256 = "1c8sdlqcmpajcpf6jfpi6amncibm9c3zrl1860r0vfimps50m34h";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pylint-django/default.nix b/pkgs/development/python-modules/pylint-django/default.nix
index ef47699053cb5..8530e6f8543db 100644
--- a/pkgs/development/python-modules/pylint-django/default.nix
+++ b/pkgs/development/python-modules/pylint-django/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pylint-django";
-  version = "2.0.13";
+  version = "2.0.14";
   disabled = !isPy3k;
 
   src = fetchFromGitHub {
     owner = "PyCQA";
     repo = pname;
     rev = "v${version}";
-    sha256 = "16xfn8zs5khdfh5pdsv3wjjhywzc1qhx7mxi5kpbcvmd6an9qi7s";
+    sha256 = "07fkwb4phfr71dpajnq6l64phjxvljx2nf8ibs12n9gwjdvm9i52";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pymavlink/default.nix b/pkgs/development/python-modules/pymavlink/default.nix
index b909886ddb5bf..d47ea812ca8fe 100644
--- a/pkgs/development/python-modules/pymavlink/default.nix
+++ b/pkgs/development/python-modules/pymavlink/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pymavlink";
-  version = "2.4.3";
+  version = "2.4.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "332d3d0291b4482641a5b3cd97e879817f50eb9c2b2ddcc30d51d619bad01b51";
+    sha256 = "1c8bxbm18h4idfdxqgklcz4n5bgsyl9y14gl9314fpflwa2c7ds8";
   };
 
   propagatedBuildInputs = [ future lxml ];
diff --git a/pkgs/development/python-modules/pymetno/default.nix b/pkgs/development/python-modules/pymetno/default.nix
new file mode 100644
index 0000000000000..129ec21e05ce5
--- /dev/null
+++ b/pkgs/development/python-modules/pymetno/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, aiohttp
+, async-timeout
+, pytz
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "PyMetno";
+  version = "0.5.0";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "Danielhiversen";
+    rev = version;
+    sha256 = "00v2r3nn48svni9rbmbf0a4ylgfcf93gk2wg7qnm1fv1qrkgscvg";
+  };
+
+  propagatedBuildInputs = [ aiohttp async-timeout pytz xmltodict ];
+
+  pythonImportsCheck = [ "metno"];
+
+  meta = with stdenv.lib; {
+    description = "A library to communicate with the met.no api";
+    homepage = "https://github.com/Danielhiversen/pyMetno/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ flyfloh ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymumble/default.nix b/pkgs/development/python-modules/pymumble/default.nix
new file mode 100644
index 0000000000000..6e72309a58d33
--- /dev/null
+++ b/pkgs/development/python-modules/pymumble/default.nix
@@ -0,0 +1,31 @@
+{ buildPythonPackage,
+  fetchFromGitHub,
+  isPy27,
+  lib,
+  opuslib,
+  protobuf,
+}:
+
+buildPythonPackage rec {
+  pname = "pymumble";
+  version = "0.3.1";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "azlux";
+    repo = "pymumble";
+    rev = "1dd6d6d4df2fdef33202f17e2acf3ba9678a5737";
+    sha256 = "1r1sch8xrpbzffsb72lhp5xjr3ac3xb599n44vsfmaam3xklz6vz";
+  };
+
+  propagatedBuildInputs = [ opuslib protobuf ];
+
+  pythonImportsCheck = [ "pymumble_py3" ];
+
+  meta = with lib; {
+    description = "Python 3 version of pymumble, Mumble library used for multiple uses like making mumble bot.";
+    homepage = "https://github.com/azlux/pymumble";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ thelegy ];
+  };
+}
diff --git a/pkgs/development/python-modules/pymupdf/default.nix b/pkgs/development/python-modules/pymupdf/default.nix
index 7cd504dec810d..a3286b31461e2 100644
--- a/pkgs/development/python-modules/pymupdf/default.nix
+++ b/pkgs/development/python-modules/pymupdf/default.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPythonPackage, fetchPypi, mupdf, swig }:
 buildPythonPackage rec {
   pname = "PyMuPDF";
-  version = "1.16.11";
+  version = "1.16.12";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "006m31qvvdwbpmxnhj1gs7rpd1jb214mf2hacqmisryx8dnb2jm7";
+    sha256 = "0mywnhn8ylm9xy23yfgnxiq4akk1rq3n7bl1m7pw6imsgbdhzrwg";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/python-modules/pyproj/001.proj.patch b/pkgs/development/python-modules/pyproj/001.proj.patch
index b024c28156c12..52e0a80f739d6 100644
--- a/pkgs/development/python-modules/pyproj/001.proj.patch
+++ b/pkgs/development/python-modules/pyproj/001.proj.patch
@@ -1,47 +1,62 @@
-diff a/pyproj/datadir.py b/pyproj/datadir.py
---- a/pyproj/datadir.py
-+++ b/pyproj/datadir.py
-@@ -52,6 +52,7 @@ def get_data_dir():
-     str: The valid data directory.
-
-     """
-+    return "@proj@/share/proj"
-     # to avoid re-validating
-     global _VALIDATED_PROJ_DATA
+diff -Nur a/pyproj/datadir.py b/pyproj/datadir.py
+--- a/pyproj/datadir.py	2020-03-24 12:53:39.417440608 +0100
++++ b/pyproj/datadir.py	2020-03-24 12:56:19.870089479 +0100
+@@ -66,9 +66,7 @@
      if _VALIDATED_PROJ_DATA is not None:
-diff a/setup.py b/setup.py
---- a/setup.py
-+++ b/setup.py
-@@ -16,7 +16,7 @@ INTERNAL_PROJ_DIR = os.path.join(CURRENT_FILE_PATH, "pyproj", BASE_INTERNAL_PROJ
-
+         return _VALIDATED_PROJ_DATA
+     global _USER_PROJ_DATA
+-    internal_datadir = os.path.join(
+-        os.path.dirname(os.path.abspath(__file__)), "proj_dir", "share", "proj"
+-    )
++    internal_datadir = "@proj@/share/proj"
+     proj_lib_dirs = os.environ.get("PROJ_LIB", "")
+     prefix_datadir = os.path.join(sys.prefix, "share", "proj")
+ 
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py	2020-03-24 12:53:39.415440624 +0100
++++ b/setup.py	2020-03-24 12:52:05.311232522 +0100
+@@ -11,7 +11,7 @@
+ PROJ_MIN_VERSION = parse_version("6.2.0")
+ CURRENT_FILE_PATH = os.path.dirname(os.path.abspath(__file__))
+ BASE_INTERNAL_PROJ_DIR = "proj_dir"
+-INTERNAL_PROJ_DIR = os.path.join(CURRENT_FILE_PATH, "pyproj", BASE_INTERNAL_PROJ_DIR)
++INTERNAL_PROJ_DIR = "@proj@"
+ 
+ 
  def check_proj_version(proj_dir):
-     """checks that the PROJ library meets the minimum version"""
--    proj = os.path.join(proj_dir, "bin", "proj")
-+    proj = "@proj@/bin/proj"
-     proj_ver_bytes = subprocess.check_output(proj, stderr=subprocess.STDOUT)
-     proj_ver_bytes = (proj_ver_bytes.decode("ascii").split()[1]).strip(",")
-     proj_version = parse_version(proj_ver_bytes)
-@@ -33,6 +33,7 @@ def get_proj_dir():
-     """
-     This function finds the base PROJ directory.
-     """
-+    return "@proj@"
-     proj_dir = os.environ.get("PROJ_DIR")
-     if proj_dir is None and os.path.exists(INTERNAL_PROJ_DIR):
-         proj_dir = INTERNAL_PROJ_DIR
-@@ -56,6 +57,7 @@ def get_proj_libdirs(proj_dir):
-     """
-     This function finds the library directories
-     """
-+    return ["@proj@/lib"]
-     proj_libdir = os.environ.get("PROJ_LIBDIR")
-     libdirs = []
-     if proj_libdir is None:
-@@ -77,6 +79,7 @@ def get_proj_incdirs(proj_dir):
-     """
-     This function finds the include directories
-     """
-+    return ["@proj@/include"]
-     proj_incdir = os.environ.get("PROJ_INCDIR")
-     incdirs = []
-     if proj_incdir is None:
+@@ -146,7 +146,7 @@
+     # By default we'll try to get options PROJ_DIR or the local version of proj
+     proj_dir = get_proj_dir()
+     library_dirs = get_proj_libdirs(proj_dir)
+-    include_dirs = get_proj_incdirs(proj_dir)
++    include_dirs = get_proj_incdirs("@projdev@")
+ 
+     # setup extension options
+     ext_options = {
+diff -Nur a/test/conftest.py b/test/conftest.py
+--- a/test/conftest.py	2020-03-24 12:53:39.417440608 +0100
++++ b/test/conftest.py	2020-03-24 23:16:47.373972786 +0100
+@@ -1,6 +1,7 @@
+ import os
+ import shutil
+ import tempfile
++import stat
+ 
+ import pytest
+ 
+@@ -17,6 +18,15 @@
+     with tempfile.TemporaryDirectory() as tmpdir:
+         tmp_data_dir = os.path.join(tmpdir, "proj")
+         shutil.copytree(data_dir, tmp_data_dir)
++
++        # Data copied from the nix store is readonly (causes cleanup problem).
++        # Make it writable.
++        for r, d, files in os.walk(tmp_data_dir):
++            os.chmod(r, os.stat(r).st_mode | stat.S_IWUSR)
++            for f in files:
++                fpath = os.path.join(r, f)
++                os.chmod(fpath, os.stat(fpath).st_mode | stat.S_IWUSR)
++
+         try:
+             os.remove(os.path.join(str(tmp_data_dir), "ntv2_0.gsb"))
+         except OSError:
diff --git a/pkgs/development/python-modules/pyproj/default.nix b/pkgs/development/python-modules/pyproj/default.nix
index 0f2763faf6094..b23cb010f0171 100644
--- a/pkgs/development/python-modules/pyproj/default.nix
+++ b/pkgs/development/python-modules/pyproj/default.nix
@@ -1,20 +1,22 @@
-{ lib, buildPythonPackage, fetchFromGitHub, python, pkgs, pythonOlder, substituteAll
+{ lib, buildPythonPackage, fetchFromGitHub, python, pkgs, pythonOlder, isPy27, substituteAll
 , aenum
 , cython
 , pytest
 , mock
 , numpy
+, shapely
 }:
 
 buildPythonPackage rec {
   pname = "pyproj";
-  version = "2.2.2";
+  version = "2.6.0";
+  disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "pyproj4";
     repo = "pyproj";
     rev = "v${version}rel";
-    sha256 = "0mb0jczgqh3sma69k7237i38h09gxgmvmddls9hpw4f3131f5ax7";
+    sha256 = "0fyggkbr3kp8mlq4c0r8sl5ah58bdg2mj4kzql9p3qyrkcdlgixh";
   };
 
   # force pyproj to use ${pkgs.proj}
@@ -22,13 +24,14 @@ buildPythonPackage rec {
     (substituteAll {
       src = ./001.proj.patch;
       proj = pkgs.proj;
+      projdev = pkgs.proj.dev;
     })
   ];
 
   buildInputs = [ cython pkgs.proj ];
 
   propagatedBuildInputs = [
-    numpy
+    numpy shapely
   ] ++ lib.optional (pythonOlder "3.6") aenum;
 
   checkInputs = [ pytest mock ];
@@ -38,6 +41,9 @@ buildPythonPackage rec {
   checkPhase = ''
     pytest . -k 'not alternative_grid_name \
                  and not transform_wgs84_to_alaska \
+                 and not transformer_group__unavailable \
+                 and not transform_group__missing_best \
+                 and not datum \
                  and not repr' \
             --ignore=test/test_doctest_wrapper.py \
             --ignore=test/test_datadir.py
diff --git a/pkgs/development/python-modules/pyroute2/default.nix b/pkgs/development/python-modules/pyroute2/default.nix
index e13472dafb4f0..76007b83588ef 100644
--- a/pkgs/development/python-modules/pyroute2/default.nix
+++ b/pkgs/development/python-modules/pyroute2/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pyroute2";
-  version = "0.5.9";
+  version = "0.5.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1dymaa3rif05k42sh4c3g2m057v2dsc2f3f49hl2rw5yz8bd23i4";
+    sha256 = "0akls1w67v17dmgr07n6rr5xy6yyj6p83ss05033gk1c3mfsbb1r";
   };
 
   # requires root priviledges
@@ -14,7 +14,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Python Netlink library";
-    homepage = https://github.com/svinota/pyroute2;
+    homepage = "https://github.com/svinota/pyroute2";
     license = licenses.asl20;
     maintainers = [maintainers.mic92];
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/pytest-faulthandler/default.nix b/pkgs/development/python-modules/pytest-faulthandler/default.nix
deleted file mode 100644
index b9ac354abfd77..0000000000000
--- a/pkgs/development/python-modules/pytest-faulthandler/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, buildPythonPackage
-, fetchPypi
-, setuptools_scm
-, pytest
-, pytest-mock
-, pythonOlder
-, faulthandler
-}:
-
-buildPythonPackage rec {
-  pname = "pytest-faulthandler";
-  version = "2.0.1";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "ed72bbce87ac344da81eb7d882196a457d4a1026a3da4a57154dacd85cd71ae5";
-  };
-
-  nativeBuildInputs = [ setuptools_scm pytest ];
-  checkInputs = [ pytest-mock ];
-  propagatedBuildInputs = lib.optional (pythonOlder "3.0") faulthandler;
-
-  checkPhase = ''
-    py.test
-  '';
-
-  meta = {
-    description = "Py.test plugin that activates the fault handler module for tests";
-    homepage = https://github.com/pytest-dev/pytest-faulthandler;
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ costrouc ];
-  };
-}
diff --git a/pkgs/development/python-modules/pytest-html/default.nix b/pkgs/development/python-modules/pytest-html/default.nix
new file mode 100644
index 0000000000000..6847c5e05d4e5
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-html/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildPythonPackage, fetchPypi, pythonOlder
+, pytest, pytest-metadata, setuptools_scm }:
+
+buildPythonPackage rec {
+  pname = "pytest-html";
+  version = "2.1.0";
+  disabled = pythonOlder "3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "14cy5iixi6i8i5r5xvvkhwk48zgxnb1ypbp0g1343mwfdihshic6";
+  };
+
+  nativeBuildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ pytest pytest-metadata ];
+
+  meta = with stdenv.lib; {
+    description = "Plugin for generating HTML reports";
+    homepage = "https://github.com/pytest-dev/pytest-html";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ mpoquet ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-metadata/default.nix b/pkgs/development/python-modules/pytest-metadata/default.nix
new file mode 100644
index 0000000000000..369ddf2c47676
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-metadata/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, pytest, setuptools_scm }:
+
+buildPythonPackage rec {
+  pname = "pytest-metadata";
+  version = "1.8.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1fk6icip2x1nh4kzhbc8cnqrs77avpqvj7ny3xadfh6yhn9aaw90";
+  };
+
+  nativeBuildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ pytest ];
+
+  meta = with stdenv.lib; {
+    description = "Plugin for accessing test session metadata";
+    homepage = "https://github.com/pytest-dev/pytest-metadata";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ mpoquet ];
+  };
+}
diff --git a/pkgs/development/python-modules/pytest-twisted/default.nix b/pkgs/development/python-modules/pytest-twisted/default.nix
new file mode 100644
index 0000000000000..6bdf1089d5d50
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-twisted/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, greenlet
+, pytest
+, decorator
+}:
+
+buildPythonPackage rec {
+  pname = "pytest-twisted";
+  version = "1.12";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "bb9af117c5c6063d9ef20ffdf2fa297caaf57de5a687e4d3607db7b0a6f74fea";
+  };
+
+  propagatedBuildInputs = [ greenlet pytest decorator ];
+
+  meta = with lib; {
+    description = "A twisted plugin for py.test";
+    homepage = "https://github.com/pytest-dev/pytest-twisted";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-jose/default.nix b/pkgs/development/python-modules/python-jose/default.nix
index a9377c4a1c213..df7e07e552391 100644
--- a/pkgs/development/python-modules/python-jose/default.nix
+++ b/pkgs/development/python-modules/python-jose/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "python-jose";
-  version = "3.0.1";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "mpdavis";
     repo = "python-jose";
     rev = version;
-    sha256 = "1ahq4m86z504bnlk9z473r7r3dprg5m39900rld797hbczdhqa4f";
+    sha256 = "1gnn0zy03pywj65ammy3sd07knzhjv8n5jhx1ir9bikgra9v0iqh";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/python-language-server/default.nix b/pkgs/development/python-modules/python-language-server/default.nix
index 74eadd9b2de31..c8bb1b5fa6f80 100644
--- a/pkgs/development/python-modules/python-language-server/default.nix
+++ b/pkgs/development/python-modules/python-language-server/default.nix
@@ -21,13 +21,13 @@ in
 
 buildPythonPackage rec {
   pname = "python-language-server";
-  version = "0.31.8";
+  version = "0.31.9";
 
   src = fetchFromGitHub {
     owner = "palantir";
     repo = "python-language-server";
     rev = version;
-    sha256 = "sha256:1h0w7x7d9g3z7vmxn5w7qxdkjya3sl0xfnklfaaaj8dkb5mjldpi";
+    sha256 = "06hd6a1hhd57hrq4vbwfs0saplkhsrz2krv8kq9kw4fz4hx7zj74";
   };
 
   # The tests require all the providers, disable otherwise.
@@ -53,8 +53,7 @@ buildPythonPackage rec {
     "test_pandas_completions"
     "test_matplotlib_completions"
     "test_snippet_parsing"
-
-  ];
+  ] ++ stdenv.lib.optional isPy27 "test_flake8_lint";
   # checkPhase = ''
   #   HOME=$TEMPDIR pytest -k "not test_pyqt_completion and not 
   # '';
diff --git a/pkgs/development/python-modules/python-mpv-jsonipc/default.nix b/pkgs/development/python-modules/python-mpv-jsonipc/default.nix
index 8b46b105d69a4..9f9818350bf29 100644
--- a/pkgs/development/python-modules/python-mpv-jsonipc/default.nix
+++ b/pkgs/development/python-modules/python-mpv-jsonipc/default.nix
@@ -3,14 +3,14 @@
 
 buildPythonPackage rec {
   pname = "python-mpv-jsonipc";
-  version = "1.1.7";
+  version = "1.1.8";
   disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "iwalton3";
     repo = "python-mpv-jsonipc";
     rev = "v${version}";
-    sha256 = "1a8lcvgwf7a19d4dj1wkkpxk44c2z9gsyz1xv4wpxi3gxlplcmcz";
+    sha256 = "0f4nfzfka5n76n6dxmgcz0rkaws7a3jrgyh00va6lnfi7h6dsmx4";
   };
 
   # 'mpv-jsonipc' does not have any tests
diff --git a/pkgs/development/python-modules/python-stdnum/default.nix b/pkgs/development/python-modules/python-stdnum/default.nix
index 556be12872b5e..39153f4a4daa5 100644
--- a/pkgs/development/python-modules/python-stdnum/default.nix
+++ b/pkgs/development/python-modules/python-stdnum/default.nix
@@ -1,11 +1,11 @@
 { lib, fetchPypi, buildPythonPackage, nose }:
 
 buildPythonPackage rec {
-  version = "1.12";
+  version = "1.13";
   pname = "python-stdnum";
   src = fetchPypi {
     inherit pname version;
-    sha256 = "19fb5asv0ngnbpiz1bqzq2jhgn845kv9hjcjajsgzgfp2k24f4sc";
+    sha256 = "0q4128rjdgavywhzlm2gz2n5ybc9b9sxs81g50dvxf5q7z9q63qj";
   };
 
   checkInputs = [ nose ];
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   '';
 
   meta = {
-    homepage = https://arthurdejong.org/python-stdnum/;
+    homepage = "https://arthurdejong.org/python-stdnum/";
     description = "Python module to handle standardized numbers and codes";
     maintainers = with lib.maintainers; [ johbo ];
     license = lib.licenses.lgpl2Plus;
diff --git a/pkgs/development/python-modules/qdarkstyle/default.nix b/pkgs/development/python-modules/qdarkstyle/default.nix
index a1893c88e0e0f..6b9b94b603f42 100644
--- a/pkgs/development/python-modules/qdarkstyle/default.nix
+++ b/pkgs/development/python-modules/qdarkstyle/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "qdarkstyle";
-  version = "2.8";
+  version = "2.8.1";
 
   src = fetchPypi {
     inherit version;
     pname = "QDarkStyle";
-    sha256 = "6a967c4b664446f8bed9df12d1032cf68cb54f186bfc9cbfdbbc756bf9a5d475";
+    sha256 = "0883vzg35fzpyl1aiijzpfcdfvpq5vi325w0m7xkx7nxplh02fym";
   };
 
   # No tests available
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A dark stylesheet for Python and Qt applications";
-    homepage = https://github.com/ColinDuquesnoy/QDarkStyleSheet;
+    homepage = "https://github.com/ColinDuquesnoy/QDarkStyleSheet";
     license = licenses.mit;
     maintainers = with maintainers; [ nyanloutre ];
   };
diff --git a/pkgs/development/python-modules/qiskit-aer/default.nix b/pkgs/development/python-modules/qiskit-aer/default.nix
new file mode 100644
index 0000000000000..e4b4d87c11b20
--- /dev/null
+++ b/pkgs/development/python-modules/qiskit-aer/default.nix
@@ -0,0 +1,99 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchFromGitHub
+, cmake
+, cvxpy
+, cython
+, numpy
+, openblas
+, pybind11
+, scikit-build
+, spdlog
+  # Check Inputs
+, qiskit-terra
+, pytestCheckHook
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "qiskit-aer";
+  version = "0.4.1";
+
+  disabled = pythonOlder "3.5";
+
+  src = fetchFromGitHub {
+    owner = "Qiskit";
+    repo = pname;
+    rev = version;
+    fetchSubmodules = true; # fetch muparserx and other required libraries
+    sha256 = "1j2pv6jx5dlzanjp1qnf32s53d8jrlpv96nvymznkcnjvqn60gv9";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    scikit-build
+  ];
+
+  buildInputs = [
+    openblas
+    spdlog
+  ];
+
+  propagatedBuildInputs = [
+    cvxpy
+    cython  # generates some cython files at runtime that need to be cython-ized
+    numpy
+    pybind11
+  ];
+
+  prePatch = ''
+    # remove dependency on PyPi cmake package, which isn't in Nixpkgs
+    substituteInPlace setup.py --replace "'cmake'" ""
+  '';
+
+  dontUseCmakeConfigure = true;
+
+  cmakeFlags = [
+    "-DBUILD_TESTS=True"
+    "-DAER_THRUST_BACKEND=OMP"
+  ];
+
+  # Needed to find qiskit.providers.aer modules in cython. This exists in GitHub, don't know why it isn't copied by default
+  postFixup = ''
+    touch $out/${python.sitePackages}/qiskit/__init__.pxd
+  '';
+
+  # *** Testing ***
+
+  pythonImportsCheck = [
+    "qiskit.providers.aer"
+    "qiskit.providers.aer.backends.qasm_simulator"
+    "qiskit.providers.aer.backends.controller_wrappers" # Checks C++ files built correctly. Only exists if built & moved to output
+  ];
+  checkInputs = [
+    qiskit-terra
+    pytestCheckHook
+  ];
+  dontUseSetuptoolsCheck = true;  # Otherwise runs tests twice
+
+  preCheck = ''
+    # Tests include a compiled "circuit" which is auto-built in $HOME
+    export HOME=$(mktemp -d)
+    # move tests b/c by default try to find (missing) cython-ized code in /build/source dir
+    cp -r test $HOME
+
+    # Add qiskit-aer compiled files to cython include search
+    pushd $HOME
+  '';
+  postCheck = ''
+    popd
+  '';
+
+  meta = with lib; {
+    description = "High performance simulators for Qiskit";
+    homepage = "https://github.com/QISKit/qiskit-aer";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
new file mode 100644
index 0000000000000..2d6d02b5ad435
--- /dev/null
+++ b/pkgs/development/python-modules/qiskit-ibmq-provider/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, pythonOlder
+, buildPythonPackage
+, fetchFromGitHub
+, arrow
+, nest-asyncio
+, qiskit-terra
+, requests
+, requests_ntlm
+, websockets
+  # check inputs
+, pytestCheckHook
+, vcrpy
+, pproxy
+}:
+
+buildPythonPackage rec {
+  pname = "qiskit-ibmq-provider";
+  version = "0.5.0";
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "Qiskit";
+    repo = pname;
+    rev = version;
+    sha256 = "1jhgsfspmry0qk7jkcryn4225j2azys3rm99agk6mh0jzwrvx4am";
+  };
+
+  propagatedBuildInputs = [
+    arrow
+    nest-asyncio
+    qiskit-terra
+    requests
+    requests_ntlm
+    websockets
+  ];
+
+  # websockets seems to be pinned b/c in v8+ it drops py3.5 support. Not an issue here (usually py3.7+, and disabled for older py3.6)
+  prePatch = ''
+    substituteInPlace requirements.txt --replace "websockets>=7,<8" "websockets"
+    substituteInPlace setup.py --replace "websockets>=7,<8" "websockets"
+  '';
+
+  # Most tests require credentials to run on IBMQ
+  checkInputs = [ pytestCheckHook vcrpy pproxy ];
+  dontUseSetuptoolsCheck = true;
+  pythonImportsCheck = [ "qiskit.providers.ibmq" ];
+  disabledTests = [ "test_old_api_url" "test_non_auth_url" "test_non_auth_url_with_hub" ];  # tests require internet connection
+  # skip tests that require IBMQ credentials, vs failing.
+  preCheck = ''
+    pushd /build/source  # run pytest from /build vs $out
+    substituteInPlace test/decorators.py --replace "Exception('Could not locate valid credentials.')" "SkipTest('No IBMQ Credentials provided for tests')"
+  '';
+  postCheck = ''
+    popd
+  '';
+
+  meta = with lib; {
+    description = "Qiskit provider for accessing the quantum devices and simulators at IBMQ";
+    homepage = "https://github.com/Qiskit/qiskit-ibmq-provider";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ drewrisinger ];
+  };
+}
diff --git a/pkgs/development/python-modules/quandl/default.nix b/pkgs/development/python-modules/quandl/default.nix
index bd73a0213310a..2d78b626092d7 100644
--- a/pkgs/development/python-modules/quandl/default.nix
+++ b/pkgs/development/python-modules/quandl/default.nix
@@ -10,12 +10,13 @@
 
 buildPythonPackage rec {
   pname = "quandl";
-  version = "3.4.8";
+  version = "3.5.0";
+  disabled = !isPy3k;
 
   src = fetchPypi {
     inherit version;
     pname = "Quandl";
-    sha256 = "179knz21filz6x6qk66b7dk2pj1x4jnvxxd5x71ap19f367dkkb3";
+    sha256 = "0zpw0nwqr4g56l9z4my0fahfgpcmfx74acbmv6nfx1dmq5ggraf3";
   };
 
   doCheck = true;
@@ -46,10 +47,10 @@ buildPythonPackage rec {
     pyasn1
   ];
 
-  meta = {
-    homepage = "https://github.com/quandl/quandl-python";
+  meta = with lib; {
     description = "Quandl Python client library";
-    maintainers = [ lib.maintainers.ilya-kolpakov ];
-    license = lib.licenses.mit;
+    homepage = "https://github.com/quandl/quandl-python";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ilya-kolpakov ];
   };
 }
diff --git a/pkgs/development/python-modules/rope/default.nix b/pkgs/development/python-modules/rope/default.nix
index 66340f9177048..6bcc05fb34d65 100644
--- a/pkgs/development/python-modules/rope/default.nix
+++ b/pkgs/development/python-modules/rope/default.nix
@@ -1,12 +1,14 @@
-{ stdenv, buildPythonPackage, fetchPypi, nose }:
+{ stdenv, buildPythonPackage, fetchPypi, pythonAtLeast, nose }:
 
 buildPythonPackage rec {
   pname = "rope";
-  version = "0.14.0";
+  version = "0.16.0";
+
+  disabled = pythonAtLeast "3.8";  # 0.17 should support Python 3.8
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1bwayj0hh459s3yh0sdrxksr9wfilgi3a49izfaj06kvgyladif5";
+    sha256 = "1zlxdrs6ww2hm41izz67h67z9dkm0rlgw8m04vygaip0q91030yj";
   };
 
   checkInputs = [ nose ];
@@ -17,7 +19,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Python refactoring library";
-    homepage = https://github.com/python-rope/rope;
+    homepage = "https://github.com/python-rope/rope";
     maintainers = with maintainers; [ goibhniu ];
     license = licenses.gpl2;
   };
diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix
index 851a58584c664..613e7af7d3a1d 100644
--- a/pkgs/development/python-modules/rpy2/default.nix
+++ b/pkgs/development/python-modules/rpy2/default.nix
@@ -1,6 +1,7 @@
 { lib
 , python
 , buildPythonPackage
+, fetchpatch
 , fetchPypi
 , isPyPy
 , R
@@ -24,13 +25,13 @@
 }:
 
 buildPythonPackage rec {
-    version = "3.2.5";
+    version = "3.2.6";
     pname = "rpy2";
 
     disabled = isPyPy;
     src = fetchPypi {
       inherit version pname;
-      sha256 = "0pnk363klic4smb3jnkm4lnh984c2cpqzawrg2j52hgy8k1bgyrk";
+      sha256 = "1p990cqx3p2pd1rc9wn66m56wahaq8dlr88frz49vb7nv4zw4a8q";
     };
 
     buildInputs = [
@@ -68,6 +69,14 @@ buildPythonPackage rec {
       # R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
       # This patch sets R_LIBS_SITE when rpy2 is imported.
       ./rpy2-3.x-r-libs-site.patch
+
+      # pandas 1.x compatibility, already merged upstream
+      # https://github.com/rpy2/rpy2/issues/636
+      (fetchpatch {
+        name = "pandas-1.x.patch";
+        url = "https://github.com/rpy2/rpy2/commit/fbd060e364b70012e8d26cc74df04ee53f769379.patch";
+        sha256 = "19rdqydwjmqg25ibmsbx7lggrr9fsyjn283zgvz1wj4iyfjwp1za";
+      })
     ];
     postPatch = ''
       substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
diff --git a/pkgs/development/python-modules/rq/default.nix b/pkgs/development/python-modules/rq/default.nix
index 0fe7a942245b0..9f57fb486d91b 100644
--- a/pkgs/development/python-modules/rq/default.nix
+++ b/pkgs/development/python-modules/rq/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "rq";
-  version = "1.2.2";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0dk664lzjhj0rk4ffpv29mbcr7vh41ph1sx7ngszk3744gh1nshp";
+    sha256 = "0xr38j35iqmhx0f2l8ix34vjs9flpqv2y17k33crh7rhm6gi9ja9";
   };
 
   # test require a running redis rerver, which is something we can't do yet
diff --git a/pkgs/development/python-modules/scikit-build/default.nix b/pkgs/development/python-modules/scikit-build/default.nix
index 8d459e2498481..745723a01bc78 100644
--- a/pkgs/development/python-modules/scikit-build/default.nix
+++ b/pkgs/development/python-modules/scikit-build/default.nix
@@ -1,7 +1,28 @@
-{ lib, buildPythonPackage, fetchPypi, wheel, setuptools, packaging
-, cmake, ninja, cython, codecov, coverage, six, virtualenv, pathpy
-, pytest, pytestcov, pytest-virtualenv, pytest-mock, pytestrunner
-, requests, flake8 }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, distro
+, packaging
+, setuptools
+, wheel
+# Test Inputs
+, cmake
+, codecov
+, coverage
+, cython
+, flake8
+, ninja
+, pathpy
+, pytest
+, pytestcov
+, pytest-mock
+, pytestrunner
+, pytest-virtualenv
+, requests
+, six
+, virtualenv
+}:
 
 buildPythonPackage rec {
   pname = "scikit-build";
@@ -12,15 +33,41 @@ buildPythonPackage rec {
     sha256 = "7342017cc82dd6178e3b19377389b8a8d1f8b429d9cdb315cfb1094e34a0f526";
   };
 
-  propagatedBuildInputs = [ wheel setuptools packaging ];
-  checkInputs = [ 
-    cmake ninja cython codecov coverage six pathpy
-    pytest pytestcov pytest-mock pytest-virtualenv pytestrunner
-    requests flake8
+  propagatedBuildInputs = [
+    distro
+    packaging
+    setuptools
+    wheel
+  ];
+  checkInputs = [
+    cmake
+    codecov
+    coverage
+    cython
+    flake8
+    ninja
+    pathpy
+    pytest
+    pytestcov
+    pytest-mock
+    pytestrunner
+    pytest-virtualenv
+    requests
+    six
+    virtualenv
   ];
 
   dontUseCmakeConfigure = true;
 
+  # scikit-build PR #458. Remove in version > 0.10.0
+  patches = [
+    (fetchpatch {
+      name = "python38-platform_linux_distribution-fix-458";
+      url = "https://github.com/scikit-build/scikit-build/commit/faa7284e5bc4c72bc8744987acdf3297b5d2e7e4.patch";
+      sha256 = "1hgl3cnkf266zaw534b64c88waxfz9721wha0m6j3hsnxk76ayjv";
+    })
+  ];
+
   disabledTests = lib.concatMapStringsSep " and " (s: "not " + s) ([
     "test_hello_develop" # tries setuptools develop install
     "test_source_distribution" # pip has no way to install missing dependencies
@@ -35,9 +82,9 @@ buildPythonPackage rec {
   '';
 
   meta = with lib; {
-    homepage = http://scikit-build.org/;
     description = "Improved build system generator for CPython C/C++/Fortran/Cython extensions";
+    homepage = "http://scikit-build.org/";
     license = with licenses; [ mit bsd2 ]; # BSD due to reuses of PyNE code
-    maintainers = [ maintainers.FlorianFranzen ];
+    maintainers = with maintainers; [ FlorianFranzen ];
   };
 }
diff --git a/pkgs/development/python-modules/scrapy/default.nix b/pkgs/development/python-modules/scrapy/default.nix
index 8fee4b6631abd..05c0c43c15c75 100644
--- a/pkgs/development/python-modules/scrapy/default.nix
+++ b/pkgs/development/python-modules/scrapy/default.nix
@@ -1,13 +1,60 @@
-{ stdenv, buildPythonPackage, fetchPypi, glibcLocales, mock, pytest, botocore,
-  testfixtures, pillow, six, twisted, w3lib, lxml, queuelib, pyopenssl,
-  service-identity, parsel, pydispatcher, cssselect, lib }:
+{ stdenv
+, buildPythonPackage
+, isPy27
+, fetchPypi
+, glibcLocales
+, pytest
+, testfixtures
+, pillow
+, twisted
+, cryptography
+, w3lib
+, lxml
+, queuelib
+, pyopenssl
+, service-identity
+, parsel
+, pydispatcher
+, cssselect
+, zope_interface
+, protego
+, lib
+, jmespath
+, sybil
+, pytest-twisted
+, botocore
+}:
+
 buildPythonPackage rec {
-  version = "1.8.0";
+  version = "2.0.1";
   pname = "Scrapy";
 
-  checkInputs = [ glibcLocales mock pytest botocore testfixtures pillow ];
+  disabled = isPy27;
+
+  checkInputs = [
+    glibcLocales
+    jmespath
+    pytest
+    sybil
+    testfixtures
+    pillow
+    pytest-twisted
+    botocore
+  ];
+
   propagatedBuildInputs = [
-    six twisted w3lib lxml cssselect queuelib pyopenssl service-identity parsel pydispatcher
+    twisted
+    cryptography
+    cssselect
+    lxml
+    parsel
+    pydispatcher
+    pyopenssl
+    queuelib
+    service-identity
+    w3lib
+    zope_interface
+    protego
   ];
 
   patches = [
@@ -18,20 +65,20 @@ buildPythonPackage rec {
     ./permissions-fix.patch
   ];
 
-  LC_ALL="en_US.UTF-8";
+  LC_ALL = "en_US.UTF-8";
 
   # Disable doctest plugin—enabled in the shipped pytest.ini—because it causes pytest to hang
   # Ignore proxy tests because requires mitmproxy
   # Ignore test_retry_dns_error because tries to resolve an invalid dns and weirdly fails with "Reactor was unclean"
   # Ignore xml encoding test on darwin because lxml can't find encodings https://bugs.launchpad.net/lxml/+bug/707396
   checkPhase = ''
-    substituteInPlace pytest.ini --replace "addopts = --doctest-modules" "addopts ="
+    substituteInPlace pytest.ini --replace "--doctest-modules" ""
     pytest --ignore=tests/test_linkextractors_deprecated.py --ignore=tests/test_proxy_connect.py --deselect tests/test_crawl.py::CrawlTestCase::test_retry_dns_error ${lib.optionalString stdenv.isDarwin "--deselect tests/test_utils_iterators.py::LxmlXmliterTestCase::test_xmliter_encoding"}
   '';
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "fe06576f9a4971de9dc0175c60fd92561e8275f2bad585c1cb5d65c5181b2db0";
+    sha256 = "85581a01f4160a103ca9906ffa4e44474f4ecd1685f0934728892c58ebf111f6";
   };
 
   postInstall = ''
@@ -42,7 +89,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A fast high-level web crawling and web scraping framework, used to crawl websites and extract structured data from their pages";
-    homepage = https://scrapy.org/;
+    homepage = "https://scrapy.org/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ drewkett marsam ];
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/seabreeze/default.nix b/pkgs/development/python-modules/seabreeze/default.nix
index 8555c024c76a8..7cf062765d3be 100644
--- a/pkgs/development/python-modules/seabreeze/default.nix
+++ b/pkgs/development/python-modules/seabreeze/default.nix
@@ -6,8 +6,9 @@
 }:
 
 ## Usage
-# In NixOS, simply add the `udev` multiple output to services.udev.packages:
-#   services.udev.packages = [ pkgs.python3Packages.seabreeze.udev ];
+# In NixOS, add the package to services.udev.packages for non-root plugdev
+# users to get device access permission:
+#    services.udev.packages = [ pkgs.python3Packages.seabreeze ];
 
 buildPythonPackage rec {
   pname = "seabreeze";
@@ -20,11 +21,9 @@ buildPythonPackage rec {
     sha256 = "0bc2s9ic77gz9m40w89snixphxlzib60xa4f49n4zasjrddfz1l8";
   };
 
-  outputs = [ "out" "udev" ];
-
   postInstall = ''
-    mkdir -p $udev/lib/udev/rules.d
-    cp misc/10-oceanoptics.rules $udev/lib/udev/rules.d/10-oceanoptics.rules
+    mkdir -p $out/etc/udev/rules.d
+    cp misc/10-oceanoptics.rules $out/etc/udev/rules.d/10-oceanoptics.rules
   '';
 
   # underlying c libraries are tested and fail
diff --git a/pkgs/development/python-modules/sfepy/default.nix b/pkgs/development/python-modules/sfepy/default.nix
index 36f4f82cb3fea..6a7bb38a74d13 100644
--- a/pkgs/development/python-modules/sfepy/default.nix
+++ b/pkgs/development/python-modules/sfepy/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   name = "sfepy_${version}";
-  version = "2019.2";
+  version = "2019.4";
 
   src = fetchurl {
     url="https://github.com/sfepy/sfepy/archive/release_${version}.tar.gz";
-    sha256 = "17dj0wbchcfa6x27yx4d4jix4z4nk6r2640xkqcsw0mf62x5l1pj";
+    sha256 = "1l9vgcw09l6bwhgfzlbn68fzpvns25r6nkd1pcp7hz5165hs6zzn";
   };
 
   propagatedBuildInputs = [
@@ -33,6 +33,7 @@ buildPythonPackage rec {
   postPatch = ''
     # broken test
     rm tests/test_homogenization_perfusion.py
+    rm tests/test_splinebox.py
 
     # slow tests
     rm tests/test_input_*.py
diff --git a/pkgs/development/python-modules/shodan/default.nix b/pkgs/development/python-modules/shodan/default.nix
index 0c88dcd0fe207..4db1172e0410b 100644
--- a/pkgs/development/python-modules/shodan/default.nix
+++ b/pkgs/development/python-modules/shodan/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "shodan";
-  version = "1.21.3";
+  version = "1.22.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1mbqdk3jdga4r08dg66j7kawmb40rs0y3nnwb9vh3c1safgqjmiz";
+    sha256 = "0pgkd0pngmygafld283zfx7whlv6yp3ldgd4sjv8bxjcsb19iw59";
   };
 
   propagatedBuildInputs = [
@@ -30,7 +30,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python library and command-line utility for Shodan";
-    homepage = https://github.com/achillean/shodan-python;
+    homepage = "https://github.com/achillean/shodan-python";
     license = licenses.mit;
     maintainers = with maintainers; [ lihop ];
   };
diff --git a/pkgs/development/python-modules/snowflake-connector-python/default.nix b/pkgs/development/python-modules/snowflake-connector-python/default.nix
index 84e92fa9f7c7a..1d83edbc72293 100644
--- a/pkgs/development/python-modules/snowflake-connector-python/default.nix
+++ b/pkgs/development/python-modules/snowflake-connector-python/default.nix
@@ -25,12 +25,12 @@
 
 buildPythonPackage rec {
   pname = "snowflake-connector-python";
-  version = "2.2.0";
+  version = "2.2.2";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1d3qxjqc79fi2l4sns5svbc6kfaihivsrpycflmh50h7x0k9sv7f";
+    sha256 = "1qqlqypxj3j5qz8jjzil7250alf0w4bx8k8ndyj2ymp8kq2z1v0j";
   };
 
   propagatedBuildInputs = [
@@ -55,6 +55,11 @@ buildPythonPackage rec {
     urllib3
   ];
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'cffi>=1.9,<1.14'," "'cffi~=1.9',"
+  '';
+
   # tests are not working
   # XXX: fix the tests
   doCheck = false;
diff --git a/pkgs/development/python-modules/spacy/models.json b/pkgs/development/python-modules/spacy/models.json
index 4d7eff7fd025e..1f1558b23c394 100644
--- a/pkgs/development/python-modules/spacy/models.json
+++ b/pkgs/development/python-modules/spacy/models.json
@@ -1,43 +1,43 @@
 [{
   "pname": "de_core_news_md",
-  "version": "2.2.0",
-  "sha256": "1n61jg0mxpl5mqpydclq9d2xds14v0blnb0plmnf7qhzzfhrmxq9",
+  "version": "2.2.5",
+  "sha256": "1jkc4r0f1916k5qpmpnwawsbnrbscq250q7b1llgxi70f2xyw9gk",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "de_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "06g2snm57k64il3plgn20l27a00dsr9dcxkyyqj6pq5ih91mfycb",
+  "version": "2.2.5",
+  "sha256": "10z30hirfwa692m0zp6wk60ccvqj84i5vjaiyyzd21innysb5y3g",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "el_core_news_md",
-  "version": "2.2.0",
-  "sha256": "0xgyh5wj9mpbl2mdrk60i3m8wmgaxbf5qviy78qk8zb1jvnxzc2n",
+  "version": "2.2.5",
+  "sha256": "1jjmf6rf1hjgqswhpqq2l5w7s351k4kk93c7rr85iv2754f71h36",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "el_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "0qbf16g6s1xfm2clnmrwr3m3vgmvvsziyhy6jbm6axh8c0fy0j8p",
+  "version": "2.2.5",
+  "sha256": "00h55fc27d3jfm3knyidz7a4rasiz7qs4wfs3sl0ndq815yvag0l",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "en_core_web_lg",
-  "version": "2.2.0",
-  "sha256": "1dxy43kf3vbz4jxc7jkr315hyzmi44v41lf09rax53f3s1jghsbh",
+  "version": "2.2.5",
+  "sha256": "1shd4gkshr4a92fhvrjhzn1abywnrcf548cv3dz8dhmi0wxa4klr",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "en_core_web_md",
-  "version": "2.2.0",
-  "sha256": "13fvr8z7fjhyzc9mm55ah6c2snpj27lrrc0rzgyb0hcg7ghd6v58",
+  "version": "2.2.5",
+  "sha256": "1x32vl2a75ps2iyhysjvdygd366zs546s82yzqwj2m7jcsdszrxy",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "en_core_web_sm",
-  "version": "2.2.0",
-  "sha256": "197afra99lhh84yi6wxvxdxibd1ikaybqfsq2nsmm7ahsw9s3kk5",
+  "version": "2.2.5",
+  "sha256": "1vna6zik7863hahxdgz0s80kbbfyw42h4c1k5jby9lkzr5jr1dk0",
   "license": "cc-by-sa-40"
 },
 {
@@ -48,44 +48,44 @@
 },
 {
   "pname": "es_core_news_md",
-  "version": "2.2.0",
-  "sha256": "0sdps0cdmsd2l3irsg63d874sba9vpn0san0n89rk8h3pa49dpab",
+  "version": "2.2.5",
+  "sha256": "0b50gd2mx1klr6ss0fsj58qmw2wpbawwv015pr9vq3j7jq805scl",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "es_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "073dgna796lk4rm7f25gyyl2ml7dfsb4azd4jkk03kxkcy6ypnag",
+  "version": "2.2.5",
+  "sha256": "19hrpxg1a5bvf9j9wlm03rkxfkgrldky7alsgl8bdwnwq3vpbgfi",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "fr_core_news_md",
-  "version": "2.2.0",
-  "sha256": "0061hnw03189z3ya1gb6506bq8yxrg17v9cywg7zbk6izakxcasr",
+  "version": "2.2.5",
+  "sha256": "1y4dqbcwa7gg6z8q84n0j4my7gyia7a2z7pln71sqa78pin06r9b",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "fr_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "0kj31kx4q9mm7ms622ph2i6pkl1ifm8s5ng3f3khf9ia0vr31vbq",
+  "version": "2.2.5",
+  "sha256": "1q2kvznbylyz4frxy5rbvpm5jvm7bfin8g3dks0c1k9hhdymv35y",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "it_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "0gxmknd68kajak8jr443799bfd69pp5j0jnmcbnyx5abzyq6wkzx",
+  "version": "2.2.5",
+  "sha256": "02r3x308s5kn62xpa2cizxfw7cyjk48zm9i6r4vhs8kycmp9z0px",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "lt_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "1j63xnp96qavg8c960y83z752mmvp9qx92r458lydrg1ixmffx9r",
+  "version": "2.2.5",
+  "sha256": "0vy0cff1fw33srqyi93vj03rnzqr8f62p1hwi565b0sb8v3n4p08",
   "license": "cc-by-sa-40"
 },
 {
   "pname": "nb_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "0s0wf3kxrhdzfkgrbxjc53hzin3w8v06iivazh6bpf6rhbiwzfr0",
+  "version": "2.2.5",
+  "sha256": "1kdn3qwlmmd52sjrvi97aiv7xp260bka009jjal79l3qrz4czrw1",
   "license": "mit"
 },
 {
@@ -96,8 +96,8 @@
 },
 {
   "pname": "pt_core_news_sm",
-  "version": "2.2.0",
-  "sha256": "1fi4wick1x96sj46idic1ad26l9zd2p5smi4v7mkry71xp7d9s13",
+  "version": "2.2.5",
+  "sha256": "02p617ybh6wqmq1scch9dgim44rhhj0k81sbw8nysv20pc6wb89a",
   "license": "cc-by-sa-40"
 },
 {
diff --git a/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix b/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
index 58b24f0dd73ef..a60a36413ac17 100644
--- a/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
+++ b/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "sphinxcontrib-openapi";
-  version = "0.5.0";
+  version = "0.6.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2a5883456c0caba0dad90f07968c75a50d5fc425a3aa06d1c538472ddf8c7e22";
+    sha256 = "02pkzcmxikcfvkvcfsclnhymzl1lc84jz6vmdaslbgh4j5vlp5ym";
   };
 
   propagatedBuildInputs = [setuptools_scm pyyaml jsonschema sphinxcontrib_httpdomain];
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with stdenv.lib; {
-    homepage = https://github.com/ikalnytskyi/sphinxcontrib-openapi;
+    homepage = "https://github.com/ikalnytskyi/sphinxcontrib-openapi";
     description = "OpenAPI (fka Swagger) spec renderer for Sphinx";
     license = licenses.bsd0;
   };
diff --git a/pkgs/development/python-modules/spyder-kernels/0.x.nix b/pkgs/development/python-modules/spyder-kernels/0.x.nix
new file mode 100644
index 0000000000000..c4a61520333e9
--- /dev/null
+++ b/pkgs/development/python-modules/spyder-kernels/0.x.nix
@@ -0,0 +1,72 @@
+{ 
+  lib
+  , buildPythonPackage
+  , fetchFromGitHub
+  , cloudpickle
+  , ipykernel
+  , wurlitzer
+  , jupyter_client
+  , pyzmq 
+  , numpy
+  , pandas
+  , scipy
+  , matplotlib
+  , xarray
+  , pytest
+  , flaky
+  , isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "spyder-kernels";
+  version = "0.5.2";
+
+  src = fetchFromGitHub {
+    owner = "spyder-ide";
+    repo = "spyder-kernels";
+    rev = "v0.5.2";
+    sha256 = "1yan589g0470y61bcyjy3wj13i94ndyffckqdyrg97vw2qhfrisb";
+  };
+
+  # requirement xarray not available on Py2k
+  disabled = !isPy3k;
+
+  propagatedBuildInputs = [
+    cloudpickle
+    ipykernel
+    wurlitzer
+    jupyter_client
+    pyzmq
+  ];
+
+  checkInputs = [
+    numpy
+    pandas
+    scipy
+    matplotlib
+    xarray
+    pytest
+    flaky
+  ];
+
+  # skipped tests:
+  # turtle requires graphics
+  # cython test fails, I don't think this can ever access cython?
+  # umr pathlist test assumes standard directories, not compatible with nix
+  checkPhase = ''
+    export JUPYTER_RUNTIME_DIR=$(mktemp -d)
+    pytest -x -vv -k '\
+      not test_turtle_launch \
+      and not test_umr_skip_cython \
+      and not test_umr_pathlist' \
+      -W 'ignore::DeprecationWarning' \
+      spyder_kernels
+  '';
+
+  meta = with lib; {
+    description = "Jupyter kernels for Spyder's console";
+    homepage = "https://github.com/spyder-ide/spyder-kernels";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gebner marcus7070 ];
+  };
+}
diff --git a/pkgs/development/python-modules/spyder-kernels/2.nix b/pkgs/development/python-modules/spyder-kernels/2.nix
deleted file mode 100644
index 86daec23d954c..0000000000000
--- a/pkgs/development/python-modules/spyder-kernels/2.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, cloudpickle, ipykernel, wurlitzer,
-  jupyter_client, pyzmq }:
-
-buildPythonPackage rec {
-  pname = "spyder-kernels";
-  version = "0.5.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "01354b7fa180a87212cc005553b31a7300159b108d36828e301d3782291323f7";
-  };
-
-  propagatedBuildInputs = [
-    cloudpickle
-    ipykernel
-    wurlitzer
-    jupyter_client
-    pyzmq
-  ];
-
-  # No tests
-  doCheck = false;
-
-  meta = with stdenv.lib; {
-    description = "Jupyter kernels for Spyder's console";
-    homepage = "https://github.com/spyder-ide/spyder-kernels";
-    license = licenses.mit;
-    maintainers = with maintainers; [ gebner ];
-  };
-}
diff --git a/pkgs/development/python-modules/spyder-kernels/default.nix b/pkgs/development/python-modules/spyder-kernels/default.nix
index f4d57ce579e79..1f9455c8087dc 100644
--- a/pkgs/development/python-modules/spyder-kernels/default.nix
+++ b/pkgs/development/python-modules/spyder-kernels/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "spyder-kernels";
-  version = "1.8.1";
+  version = "1.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a782fc5961a9dd48d520ddc1c868b960d54b8edb1116c21fc2e3c347fe5a4474";
+    sha256 = "1sqjagabqccrc73a423smfjmiph7lfjzj26r6hn3j3vf3drm3rpj";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/spyder/2.nix b/pkgs/development/python-modules/spyder/3.nix
index b707d4a0abc1b..7987775cee1d2 100644
--- a/pkgs/development/python-modules/spyder/2.nix
+++ b/pkgs/development/python-modules/spyder/3.nix
@@ -1,7 +1,7 @@
 { stdenv, buildPythonPackage, fetchPypi, makeDesktopItem, jedi, pycodestyle,
   psutil, pyflakes, rope, numpy, scipy, matplotlib, pylint, keyring, numpydoc,
   qtconsole, qtawesome, nbconvert, mccabe, pyopengl, cloudpickle, pygments,
-  spyder-kernels, qtpy, pyzmq, chardet
+  spyder-kernels_0_5, qtpy, pyzmq, chardet
 , pyqtwebengine
 }:
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     jedi pycodestyle psutil pyflakes rope numpy scipy matplotlib pylint keyring
-    numpydoc qtconsole qtawesome nbconvert mccabe pyopengl cloudpickle spyder-kernels
+    numpydoc qtconsole qtawesome nbconvert mccabe pyopengl cloudpickle spyder-kernels_0_5
     pygments qtpy pyzmq chardet pyqtwebengine
   ];
 
diff --git a/pkgs/development/python-modules/spyder/default.nix b/pkgs/development/python-modules/spyder/default.nix
index 65fabc6c7bc4f..283c9b33f34ed 100644
--- a/pkgs/development/python-modules/spyder/default.nix
+++ b/pkgs/development/python-modules/spyder/default.nix
@@ -1,17 +1,19 @@
-{ stdenv, buildPythonPackage, fetchPypi, makeDesktopItem, intervaltree, jedi, pycodestyle,
+{ stdenv, buildPythonPackage, fetchPypi, isPy27, makeDesktopItem, intervaltree, jedi, pycodestyle,
   psutil, pyflakes, rope, numpy, scipy, matplotlib, pylint, keyring, numpydoc,
   qtconsole, qtawesome, nbconvert, mccabe, pyopengl, cloudpickle, pygments,
   spyder-kernels, qtpy, pyzmq, chardet, qdarkstyle, watchdog, python-language-server
-, pyqtwebengine
+, pyqtwebengine, atomicwrites, pyxdg, diff-match-patch
 }:
 
 buildPythonPackage rec {
   pname = "spyder";
-  version = "4.0.1";
+  version = "4.1.1";
+
+  disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4b279c16487d224368dd2213e1517185fa59fc528f539601fffb34ea97accb7b";
+    sha256 = "13ajjifyf7w895vpl0h9r59m73zisby81xjw2c5pk49fh5l6ycs9";
   };
 
   nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ];
@@ -20,6 +22,7 @@ buildPythonPackage rec {
     intervaltree jedi pycodestyle psutil pyflakes rope numpy scipy matplotlib pylint keyring
     numpydoc qtconsole qtawesome nbconvert mccabe pyopengl cloudpickle spyder-kernels
     pygments qtpy pyzmq chardet pyqtwebengine qdarkstyle watchdog python-language-server
+    atomicwrites pyxdg diff-match-patch
   ];
 
   # There is no test for spyder
@@ -42,8 +45,12 @@ buildPythonPackage rec {
     substituteInPlace setup.py --replace "pyqt5<5.13" "pyqt5"
   '';
 
-  # Create desktop item
   postInstall = ''
+    # add Python libs to env so Spyder subprocesses
+    # created to run compute kernels don't fail with ImportErrors
+    wrapProgram $out/bin/spyder3 --prefix PYTHONPATH : "$PYTHONPATH"
+
+    # Create desktop item
     mkdir -p $out/share/icons
     cp spyder/images/spyder.svg $out/share/icons
     cp -r $desktopItem/share/applications/ $out/share
@@ -66,6 +73,5 @@ buildPythonPackage rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ gebner ];
-    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/sybil/default.nix b/pkgs/development/python-modules/sybil/default.nix
index 8b1677a7b8434..cf30b4546cdc9 100644
--- a/pkgs/development/python-modules/sybil/default.nix
+++ b/pkgs/development/python-modules/sybil/default.nix
@@ -1,31 +1,28 @@
-{ stdenv, buildPythonApplication, fetchPypi, fetchpatch
-, pytest, nose }:
+{ lib
+, buildPythonApplication
+, fetchPypi
+, pytest
+, nose
+}:
 
 buildPythonApplication rec {
-  pname   = "sybil";
-  version = "1.0.9";
+  pname = "sybil";
+  version = "1.2.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "41d2f1dba8fd1d8ead5e9b1220b590fab8b0d1ca01d43da08555b1fb08d4d8e8";
+    sha256 = "dd84e68facfcb778298ef50a4d7446d4d9092e9d8596012b12bcb82858fd10e1";
   };
 
-  patches = [
-    (fetchpatch {
-      url = https://github.com/cjw296/sybil/commit/6461d8156cfb68bd073ec613a5a516916e97e549.patch;
-      sha256 = "0aqny0i7l6g6d7vr025b90zz8wzszqdbmi05mp67dxw5xqjqvxj2";
-    })
-  ];
-
   checkInputs = [ pytest nose ];
 
   checkPhase = ''
     py.test tests
   '';
 
-  meta = with stdenv.lib; {
-    description = "Automated testing for the examples in your documentation.";
-    homepage    = https://github.com/cjw296/sybil/;
-    license     = licenses.mit;
+  meta = with lib; {
+    description = "Automated testing for the examples in your documentation";
+    homepage = "https://github.com/cjw296/sybil";
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index ed685bc0c4852..7c80452b20fd0 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -1,7 +1,7 @@
 { stdenv, pkgs, bazel_0, buildBazelPackage, lib, fetchFromGitHub, fetchpatch, symlinkJoin
 , addOpenGLRunpath
 # Python deps
-, buildPythonPackage, isPy3k, pythonOlder, pythonAtLeast, python
+, buildPythonPackage, isPy3k, isPy27, pythonOlder, pythonAtLeast, python
 # Python libraries
 , numpy, tensorflow-tensorboard, backports_weakref, mock, enum34, absl-py
 , future, setuptools, wheel, keras-preprocessing, keras-applications, google-pasta
@@ -348,6 +348,7 @@ let
 
 in buildPythonPackage {
   inherit version pname;
+  disabled = isPy27 || (pythonAtLeast "3.8");
 
   src = bazel-build.python;
 
diff --git a/pkgs/development/python-modules/tesserocr/default.nix b/pkgs/development/python-modules/tesserocr/default.nix
index 2d4f9d10a8cc0..df1b02283043c 100644
--- a/pkgs/development/python-modules/tesserocr/default.nix
+++ b/pkgs/development/python-modules/tesserocr/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname = "tesserocr";
-  version = "2.5.0";
+  version = "2.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0nj33mwvppacy6p5mqk9a4x26hx9ailshgad84ks60wyms6rgjiv";
+    sha256 = "0cc7d4r11z26rhcwpmcc42fi9kr3f20nq5pk84jrczr18i0g99mh";
   };
 
   nativeBuildInputs = [ cython pkg-config ];
diff --git a/pkgs/development/python-modules/thespian/default.nix b/pkgs/development/python-modules/thespian/default.nix
index 1c59b0cae6b1c..add36ccf1b62f 100644
--- a/pkgs/development/python-modules/thespian/default.nix
+++ b/pkgs/development/python-modules/thespian/default.nix
@@ -1,13 +1,13 @@
 { fetchPypi, buildPythonPackage, lib }:
 
 buildPythonPackage rec {
-  version = "3.9.11";
+  version = "3.10.0";
   pname = "thespian";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "84887f0437ec144f7266ae22678bc5dc5d2a9e60a89f1f7c1707cbea5e03022a";
+    sha256 = "0n85nhj5hr8kv33jk4by8hnxm3kni5f4z1jhiw27dlf6cbgsv892";
   };
 
   # Do not run the test suite: it takes a long time and uses
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python Actor concurrency library";
-    homepage = http://thespianpy.com/;
+    homepage = "http://thespianpy.com/";
     license = licenses.mit;
     maintainers = [ maintainers.kquick ];
   };
diff --git a/pkgs/development/python-modules/trackpy/default.nix b/pkgs/development/python-modules/trackpy/default.nix
index 32c8c64c68c71..d77ca31687fd1 100644
--- a/pkgs/development/python-modules/trackpy/default.nix
+++ b/pkgs/development/python-modules/trackpy/default.nix
@@ -12,13 +12,13 @@
 
 buildPythonPackage rec {
   pname = "trackpy";
-  version = "0.4.1";
+  version = "0.4.2";
 
   src = fetchFromGitHub {
     owner = "soft-matter";
     repo = pname;
     rev = "v${version}";
-    sha256 = "01fdv93f6z16gypmvqnlbjmcih7dmr7a63n5w9swmp11x3if4iyq";
+    sha256 = "16mc22z3104fvygky4gy3gvifjijm42db48v2z1y0fmyf6whi9p6";
   };
 
   propagatedBuildInputs = [
@@ -54,5 +54,6 @@ buildPythonPackage rec {
     homepage = https://github.com/soft-matter/trackpy;
     license = licenses.bsd3;
     maintainers = [ maintainers.costrouc ];
+    broken = true; # not compatible with latest pandas
   };
 }
diff --git a/pkgs/development/python-modules/twisted/default.nix b/pkgs/development/python-modules/twisted/default.nix
index 5c4fea3f9b1b5..2bea54818c243 100644
--- a/pkgs/development/python-modules/twisted/default.nix
+++ b/pkgs/development/python-modules/twisted/default.nix
@@ -16,12 +16,12 @@
 }:
 buildPythonPackage rec {
   pname = "Twisted";
-  version = "19.10.0";
+  version = "20.3.0";
 
   src = fetchPypi {
     inherit pname version;
     extension = "tar.bz2";
-    sha256 = "7394ba7f272ae722a74f3d969dcf599bc4ef093bc392038748a490f1724a515d";
+    sha256 = "040yzha6cyshnn6ljgk2birgh6mh2cnra48xp5ina5vfsnsmab6p";
   };
 
   propagatedBuildInputs = [ zope_interface incremental automat constantly hyperlink pyhamcrest attrs setuptools ];
diff --git a/pkgs/development/python-modules/txamqp/default.nix b/pkgs/development/python-modules/txamqp/default.nix
index d59a0bb8b8a45..db973dbffbed8 100644
--- a/pkgs/development/python-modules/txamqp/default.nix
+++ b/pkgs/development/python-modules/txamqp/default.nix
@@ -1,22 +1,22 @@
 { stdenv
 , buildPythonPackage
-, fetchurl
+, fetchPypi
 , twisted
 }:
 
 buildPythonPackage rec {
-  pname = "txamqp";
-  version = "0.3";
+  pname = "txAMQP";
+  version = "0.8.2";
 
-  src = fetchurl {
-    url = "https://launchpad.net/txamqp/trunk/${version}/+download/python-txamqp_${version}.orig.tar.gz";
-    sha256 = "1r2ha0r7g14i4b5figv2spizjrmgfpspdbl1m031lw9px2hhm463";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4";
   };
 
-  buildInputs = [ twisted ];
+  propagatedBuildInputs = [ twisted ];
 
   meta = with stdenv.lib; {
-    homepage = https://launchpad.net/txamqp;
+    homepage = "https://github.com/txamqp/txamqp";
     description = "Library for communicating with AMQP peers and brokers using Twisted";
     license = licenses.asl20;
     maintainers = [];
diff --git a/pkgs/development/python-modules/uamqp/default.nix b/pkgs/development/python-modules/uamqp/default.nix
index 8e74c6460fe70..e11088048c34d 100644
--- a/pkgs/development/python-modules/uamqp/default.nix
+++ b/pkgs/development/python-modules/uamqp/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "uamqp";
-  version = "1.2.5";
+  version = "1.2.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "02d78242fcd0a58489aaf275964a6cf7581d7a2334ee240d2d547f8aca8607c6";
+    sha256 = "1pzgj85c6g8vr3dq215cd1y2pn8pxc6wa7mjd9m0zrglr1qwwhdz";
   };
 
   buildInputs = [
@@ -39,7 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "An AMQP 1.0 client library for Python";
-    homepage = https://github.com/Azure/azure-uamqp-python;
+    homepage = "https://github.com/Azure/azure-uamqp-python";
     license = licenses.mit;
     maintainers = with maintainers; [ mwilsoninsight ];
   };
diff --git a/pkgs/development/python-modules/variants/default.nix b/pkgs/development/python-modules/variants/default.nix
new file mode 100644
index 0000000000000..af2224e3536e5
--- /dev/null
+++ b/pkgs/development/python-modules/variants/default.nix
@@ -0,0 +1,32 @@
+{ buildPythonPackage
+, fetchPypi
+, pytestrunner
+, setuptools_scm
+, pytest
+, lib
+}:
+buildPythonPackage rec {
+  pname = "variants";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version ;
+    sha256 = "511f75b4cf7483c27e4d86d9accf2b5317267900c166d17636beeed118929b90";
+  };
+
+  nativeBuildInputs = [
+    pytestrunner
+    setuptools_scm
+  ];
+
+  checkInputs = [
+    pytest
+  ];
+  
+  meta = with lib; {
+    description = "Library providing syntactic sugar for creating variant forms of a canonical function";
+    homepage = "https://github.com/python-variants/variants";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ rakesh4g ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/waitress-django/default.nix b/pkgs/development/python-modules/waitress-django/default.nix
index 6b3ca778ead14..e76d1f1102966 100644
--- a/pkgs/development/python-modules/waitress-django/default.nix
+++ b/pkgs/development/python-modules/waitress-django/default.nix
@@ -1,11 +1,11 @@
-{ buildPythonPackage, django_1_8, waitress }:
+{ buildPythonPackage, django, waitress }:
 
 buildPythonPackage {
   pname = "waitress-django";
   version = "0.0.0";
 
   src = ./.;
-  pythonPath = [ django_1_8 waitress ];
+  pythonPath = [ django waitress ];
   doCheck = false;
   meta.description = "A waitress WSGI server serving django";
 }
diff --git a/pkgs/development/python-modules/wsgitools/default.nix b/pkgs/development/python-modules/wsgitools/default.nix
new file mode 100644
index 0000000000000..ab6f06abac65a
--- /dev/null
+++ b/pkgs/development/python-modules/wsgitools/default.nix
@@ -0,0 +1,28 @@
+{lib
+,buildPythonPackage
+,fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "wsgitools";
+  version = "0.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0q6kmrkqf02fgww7z1g9cw8f70fimdzs1bvv9inb7fsk0c3pcf1i";
+  };
+
+  meta = with lib; {
+    maintainers = with maintainers; [ clkamp ];
+    description = "A set of tools working with WSGI";
+    longDescription = ''
+      wsgitools is a set of tools working with WSGI (see PEP 333). It
+      includes classes for filtering content, middlewares for caching,
+      logging and tracebacks as well as two backends for SCGI. Goals
+      in writing it were portability and simplicity.
+    '';
+    homepage = "https://subdivi.de/~helmut/wsgitools/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/python-modules/xdg/default.nix b/pkgs/development/python-modules/xdg/default.nix
new file mode 100644
index 0000000000000..8b2d73b00fb8c
--- /dev/null
+++ b/pkgs/development/python-modules/xdg/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPythonPackage, fetchFromGitHub, isPy27
+, clikit
+, poetry
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  version = "4.0.1";
+  pname = "xdg";
+  disabled = isPy27;
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "srstevenson";
+    repo = pname;
+    rev = version;
+    sha256 = "13kgnbwam6wmdbig0m98vmyjcqrp0j62nmfknb6prr33ns2nxbs2";
+  };
+
+  nativeBuildInputs = [ poetry ];
+
+  propagatedBuildInputs = [
+    clikit
+  ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  meta = with lib; {
+    description = "XDG Base Directory Specification for Python";
+    homepage = "https://github.com/srstevenson/xdg";
+    license = licenses.isc;
+    maintainers = with maintainers; [ jonringer ];
+  };
+}
diff --git a/pkgs/development/python-modules/xdis/default.nix b/pkgs/development/python-modules/xdis/default.nix
index 831dd888fae89..03e91c0cff4f7 100644
--- a/pkgs/development/python-modules/xdis/default.nix
+++ b/pkgs/development/python-modules/xdis/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "xdis";
-  version = "4.2.2";
+  version = "4.2.3";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "rocky";
     repo = "python-xdis";
     rev = version;
-    sha256 = "0d286myx6z6cbih77h8z5p9vscxvww3gy59lmi1w6y2nq6c8sqzb";
+    sha256 = "0yjb07gk74qsag4ahjrbqgl7pgr2kvm43c7yrv10mwxk0ax51337";
   };
 
   checkInputs = [ pytest ];
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Python cross-version byte-code disassembler and marshal routines";
-    homepage = https://github.com/rocky/python-xdis/;
+    homepage = "https://github.com/rocky/python-xdis/";
     license = licenses.gpl2;
   };
 }
diff --git a/pkgs/development/python-modules/xml2rfc/default.nix b/pkgs/development/python-modules/xml2rfc/default.nix
index cf4eadd99d892..b2bd5af56c8c1 100644
--- a/pkgs/development/python-modules/xml2rfc/default.nix
+++ b/pkgs/development/python-modules/xml2rfc/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "xml2rfc";
-  version = "2.37.3";
+  version = "2.41.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4ae4e99a4b482caac89d8ffd93d16a4510db36907475b1879713a1dc885646ad";
+    sha256 = "0xmhgn62a8a7282yd003zz63mrgyajb6sg29bfyllx3mxmdlb0iz";
   };
 
   propagatedBuildInputs = [
@@ -36,7 +36,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Tool generating IETF RFCs and drafts from XML sources";
-    homepage = https://tools.ietf.org/tools/xml2rfc/trac/;
+    homepage = "https://tools.ietf.org/tools/xml2rfc/trac/";
     # Well, parts might be considered unfree, if being strict; see:
     # http://metadata.ftp-master.debian.org/changelogs/non-free/x/xml2rfc/xml2rfc_2.9.6-1_copyright
     license = licenses.bsd3;
diff --git a/pkgs/development/python-modules/xstatic-jquery/default.nix b/pkgs/development/python-modules/xstatic-jquery/default.nix
index 8e3f084ca7f03..a1a5e2b4dadc1 100644
--- a/pkgs/development/python-modules/xstatic-jquery/default.nix
+++ b/pkgs/development/python-modules/xstatic-jquery/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "XStatic-jQuery";
-  version = "3.3.1.1";
+  version = "3.4.1.0";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "0xlgs4rlabzfcp8p2zspwpsljycb0djyrk7qy4qh76i7zkfhwn8j";
+    sha256 = "0y2rhbasr7vdjbgi6x67cx97hwdnmv6m5difqqq59yb5n9zark1z";
   };
 
   # no tests implemented
diff --git a/pkgs/development/python-modules/z3c-checkversions/default.nix b/pkgs/development/python-modules/z3c-checkversions/default.nix
index 41b7fb5c5206b..cf4f6f7dd1468 100644
--- a/pkgs/development/python-modules/z3c-checkversions/default.nix
+++ b/pkgs/development/python-modules/z3c-checkversions/default.nix
@@ -18,6 +18,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ zc_buildout ];
   checkInputs = [ zope_testrunner ];
+  doCheck = !python.pkgs.isPy27;
   checkPhase = ''
     ${python.interpreter} -m zope.testrunner --test-path=src []
   '';
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index 622de68c6d4ed..25382fa19ad1b 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -10,12 +10,12 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.24.4";
+  version = "0.24.5";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f66d38f16026097572939ab78b1f46a97f556bca415491eb0fd094d0b5827dfe";
+    sha256 = "0jpgd0rk91si93857mjrizan5gc42kj1q4fi4160qgk68la88fl9";
   };
 
   propagatedBuildInputs = [ ifaddr ]
diff --git a/pkgs/development/python-modules/zetup/default.nix b/pkgs/development/python-modules/zetup/default.nix
index eb3c5ff135cae..85e950b830e89 100644
--- a/pkgs/development/python-modules/zetup/default.nix
+++ b/pkgs/development/python-modules/zetup/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi
+{ lib, buildPythonPackage, fetchPypi
 , setuptools_scm, pathpy, nbconvert
 , pytest }:
 
@@ -11,11 +11,10 @@ buildPythonPackage rec {
     sha256 = "b8a9bdcfa4b705d72b55b218658bc9403c157db7b57a14158253c98d03ab713d";
   };
 
-  # Python 3.7 compatibility
-  # See https://github.com/zimmermanncode/zetup/pull/1
+  # Python 3.8 compatibility
   postPatch = ''
     substituteInPlace zetup/zetup_config.py \
-      --replace "'3.6']" "'3.6', '3.7']"
+      --replace "'3.7']" "'3.7', '3.8']"
   '';
 
   checkPhase = ''
@@ -25,11 +24,9 @@ buildPythonPackage rec {
   checkInputs = [ pytest pathpy nbconvert ];
   propagatedBuildInputs = [ setuptools_scm ];
 
-  meta = with stdenv.lib; {
-    description = ''
-      Zimmermann's Extensible Tools for Unified Project setups
-    '';
-    homepage = https://github.com/zimmermanncode/zetup;
+  meta = with lib; {
+    description = "Zimmermann's Extensible Tools for Unified Project setups";
+    homepage = "https://github.com/zimmermanncode/zetup";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
   };