about summary refs log tree commit diff
path: root/pkgs/development/python-modules
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-11-27 15:09:19 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-11-27 15:09:19 +0100
commitb2a3891e12777fa5e16bc93bc95c0d5ba256ebaf (patch)
tree220c385a8657d85bb6b305819a1842a3b1f4079c /pkgs/development/python-modules
parent977848375167f4671a03ccc0dbf5896f4cf0d3fe (diff)
parentbe36f6f0a0ffbeef228a021f5a343f5ce7a183de (diff)
Merge master into staging-next
Diffstat (limited to 'pkgs/development/python-modules')
-rw-r--r--pkgs/development/python-modules/FormEncode/default.nix24
-rw-r--r--pkgs/development/python-modules/HTSeq/default.nix20
-rw-r--r--pkgs/development/python-modules/Wand/default.nix4
-rw-r--r--pkgs/development/python-modules/bellows/default.nix4
-rw-r--r--pkgs/development/python-modules/blivet/default.nix6
-rw-r--r--pkgs/development/python-modules/boto3/default.nix4
-rw-r--r--pkgs/development/python-modules/botocore/default.nix4
-rw-r--r--pkgs/development/python-modules/browsermob-proxy/default.nix6
-rw-r--r--pkgs/development/python-modules/cftime/default.nix4
-rw-r--r--pkgs/development/python-modules/cliapp/default.nix2
-rw-r--r--pkgs/development/python-modules/clintermission/default.nix29
-rw-r--r--pkgs/development/python-modules/cmdtest/default.nix2
-rw-r--r--pkgs/development/python-modules/cnvkit/default.nix33
-rw-r--r--pkgs/development/python-modules/coapthon3/default.nix20
-rw-r--r--pkgs/development/python-modules/coloredlogs/default.nix4
-rw-r--r--pkgs/development/python-modules/cryptography/2.9.nix1
-rw-r--r--pkgs/development/python-modules/crytic-compile/default.nix4
-rw-r--r--pkgs/development/python-modules/discordpy/default.nix13
-rw-r--r--pkgs/development/python-modules/dogpile.cache/default.nix4
-rw-r--r--pkgs/development/python-modules/emv/default.nix39
-rw-r--r--pkgs/development/python-modules/enamlx/default.nix6
-rw-r--r--pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch274
-rw-r--r--pkgs/development/python-modules/executor/default.nix4
-rw-r--r--pkgs/development/python-modules/genanki/default.nix4
-rw-r--r--pkgs/development/python-modules/git-annex-adapter/default.nix4
-rw-r--r--pkgs/development/python-modules/gradient_statsd/default.nix3
-rw-r--r--pkgs/development/python-modules/ha-ffmpeg/default.nix4
-rw-r--r--pkgs/development/python-modules/imantics/default.nix46
-rw-r--r--pkgs/development/python-modules/jupyterlab-git/default.nix11
-rw-r--r--pkgs/development/python-modules/larch/default.nix2
-rw-r--r--pkgs/development/python-modules/libsass/default.nix37
-rw-r--r--pkgs/development/python-modules/mlxtend/default.nix49
-rw-r--r--pkgs/development/python-modules/mss/default.nix8
-rw-r--r--pkgs/development/python-modules/nilearn/default.nix26
-rw-r--r--pkgs/development/python-modules/nuitka/default.nix2
-rw-r--r--pkgs/development/python-modules/pinboard/default.nix2
-rw-r--r--pkgs/development/python-modules/plaid-python/default.nix4
-rw-r--r--pkgs/development/python-modules/ppscore/default.nix35
-rw-r--r--pkgs/development/python-modules/pure-eval/default.nix2
-rw-r--r--pkgs/development/python-modules/pure-pcapy3/default.nix2
-rw-r--r--pkgs/development/python-modules/pwntools/default.nix4
-rw-r--r--pkgs/development/python-modules/pyhs100/default.nix4
-rw-r--r--pkgs/development/python-modules/pypandoc/default.nix10
-rw-r--r--pkgs/development/python-modules/pyqtgraph/default.nix11
-rw-r--r--pkgs/development/python-modules/pysaml2/default.nix3
-rw-r--r--pkgs/development/python-modules/pyscard/default.nix17
-rw-r--r--pkgs/development/python-modules/pytorch/default.nix4
-rw-r--r--pkgs/development/python-modules/rpy2/default.nix15
-rw-r--r--pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch8
-rw-r--r--pkgs/development/python-modules/scrapy/default.nix4
-rw-r--r--pkgs/development/python-modules/shap/default.nix70
-rw-r--r--pkgs/development/python-modules/shapely/default.nix3
-rw-r--r--pkgs/development/python-modules/slicer/default.nix29
-rw-r--r--pkgs/development/python-modules/smart_open/default.nix4
-rw-r--r--pkgs/development/python-modules/spacy/default.nix4
-rw-r--r--pkgs/development/python-modules/supervise_api/default.nix4
-rw-r--r--pkgs/development/python-modules/symengine/default.nix9
-rw-r--r--pkgs/development/python-modules/tag-expressions/default.nix2
-rw-r--r--pkgs/development/python-modules/thinc/default.nix4
-rw-r--r--pkgs/development/python-modules/timeout-decorator/default.nix4
-rw-r--r--pkgs/development/python-modules/tmdb3/default.nix5
-rw-r--r--pkgs/development/python-modules/tracing/default.nix2
-rw-r--r--pkgs/development/python-modules/trimesh/default.nix4
-rw-r--r--pkgs/development/python-modules/ttystatus/default.nix2
-rw-r--r--pkgs/development/python-modules/xlib/default.nix4
-rw-r--r--pkgs/development/python-modules/xmljson/default.nix26
-rw-r--r--pkgs/development/python-modules/xstatic-jquery/default.nix4
-rw-r--r--pkgs/development/python-modules/zigpy-xbee/default.nix2
-rw-r--r--pkgs/development/python-modules/zigpy-zigate/default.nix8
-rw-r--r--pkgs/development/python-modules/zope_interface/default.nix2
70 files changed, 857 insertions, 167 deletions
diff --git a/pkgs/development/python-modules/FormEncode/default.nix b/pkgs/development/python-modules/FormEncode/default.nix
index f79e76b52c412..d91bef07d2aea 100644
--- a/pkgs/development/python-modules/FormEncode/default.nix
+++ b/pkgs/development/python-modules/FormEncode/default.nix
@@ -1,24 +1,28 @@
-{ stdenv, buildPythonPackage, fetchPypi, dnspython, pycountry, nose }:
+{ stdenv, buildPythonPackage, fetchPypi, dnspython, pycountry, nose, setuptools_scm, six, isPy27 }:
 
 buildPythonPackage rec {
   pname = "FormEncode";
-  version = "1.3.1";
+  version = "2.0.0";
+
+  disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1xm77h2mds2prlaz0z4nzkx13g61rx5c2v3vpgjq9d5ij8bzb8md";
+    sha256 = "049pm276140h30xgzwylhpii24xcln1qfdlfmbj69sqpfhlr5szj";
   };
 
-  buildInputs = [ dnspython pycountry nose ];
-
-  patchPhase = ''
-    # dnspython3 has been superseded, see its PyPI page
-    substituteInPlace setup.py --replace dnspython3 dnspython
+  postPatch = ''
+    sed -i 's/setuptools_scm_git_archive//' setup.py
+    sed -i 's/use_scm_version=.*,/version="${version}",/' setup.py
   '';
 
+  nativeBuildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ six ];
+
+  checkInputs = [ dnspython pycountry nose ];
+
   preCheck = ''
-    # two tests require dns resolving
-    sed -i 's/test_cyrillic_email/noop/' formencode/tests/test_email.py
+    # requires dns resolving
     sed -i 's/test_unicode_ascii_subgroup/noop/' formencode/tests/test_email.py
   '';
 
diff --git a/pkgs/development/python-modules/HTSeq/default.nix b/pkgs/development/python-modules/HTSeq/default.nix
index abb0c8520dd02..83263f734bd45 100644
--- a/pkgs/development/python-modules/HTSeq/default.nix
+++ b/pkgs/development/python-modules/HTSeq/default.nix
@@ -1,18 +1,26 @@
-{ stdenv, buildPythonPackage, fetchPypi, cython, numpy, pysam, matplotlib
-}:
+{ stdenv, buildPythonPackage, fetchFromGitHub, cython, numpy, pysam, matplotlib, python, isPy27, isPy3k }:
 buildPythonPackage rec {
   version = "0.12.4";
   pname = "HTSeq";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "e3980bb4f12899442b4fa6f24f0ba149090f71cedb1eaf7128249afe4eb921ff";
+  src = fetchFromGitHub {
+    owner = "htseq";
+    repo = "htseq";
+    rev = "release_${version}";
+    sha256 = "0y7vh249sljqjnv81060w4xkdx6f1y5zdqkh38yk926x6v9riijm";
   };
 
-  buildInputs = [ cython numpy pysam ];
+  nativeBuildInputs = [ cython ];
   propagatedBuildInputs = [ numpy pysam matplotlib ];
 
+  checkPhase = stdenv.lib.optionalString isPy27 ''
+    ${python.interpreter} python2/test/test_general.py
+  '' + stdenv.lib.optionalString isPy3k ''
+    ${python.interpreter} python3/test/test_general.py
+  '';
+
   meta = with stdenv.lib; {
+    homepage = "https://htseq.readthedocs.io/";
     description = "A framework to work with high-throughput sequencing data";
     maintainers = with maintainers; [ unode ];
     platforms = platforms.unix;
diff --git a/pkgs/development/python-modules/Wand/default.nix b/pkgs/development/python-modules/Wand/default.nix
index 4f4dbbc2fd19e..e82fd1d1391c3 100644
--- a/pkgs/development/python-modules/Wand/default.nix
+++ b/pkgs/development/python-modules/Wand/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "Wand";
-  version = "0.6.3";
+  version = "0.6.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d21429288fe0de63d829dbbfb26736ebaed9fd0792c2a0dc5943c5cab803a708";
+    sha256 = "6aeb0183d94762b37a8cdee97174f38ae21e626d44f62f1e2f0ab48a35026e98";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/bellows/default.nix b/pkgs/development/python-modules/bellows/default.nix
index b0c899cdd3b8b..ab50a1acd8ef8 100644
--- a/pkgs/development/python-modules/bellows/default.nix
+++ b/pkgs/development/python-modules/bellows/default.nix
@@ -5,14 +5,14 @@
 
 let
   pname = "bellows";
-  version = "0.20.3";
+  version = "0.21.0";
 
 in buildPythonPackage rec {
   inherit pname version;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9342b6b9423c818f99f7c6d9086fbb5e27d5c2efbb1f2a08f6f5a917c4991f86";
+    sha256 = "fd2ac40c1f3550580dc561ae58d7d15cfa12e6a7cc5d35ee80e7a1cb6a4cda4f";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/blivet/default.nix b/pkgs/development/python-modules/blivet/default.nix
index b8d1b4670aeae..d224f2bc22e12 100644
--- a/pkgs/development/python-modules/blivet/default.nix
+++ b/pkgs/development/python-modules/blivet/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, buildPythonPackage, pykickstart, pyparted, pyblock
-, pyudev, six, libselinux, multipath-tools, lsof, utillinux
+, pyudev, six, libselinux, multipath-tools, lsof, util-linux
 }:
 
 buildPythonPackage rec {
@@ -19,11 +19,11 @@ buildPythonPackage rec {
       -e '/^def set_friendly_names/a \    return False' \
       blivet/devicelibs/mpath.py
     sed -i -e '/"wipefs"/ {
-      s|wipefs|${utillinux}/sbin/wipefs|
+      s|wipefs|${util-linux}/sbin/wipefs|
       s/-f/--force/
     }' blivet/formats/__init__.py
     sed -i -e 's|"lsof"|"${lsof}/bin/lsof"|' blivet/formats/fs.py
-    sed -i -r -e 's|"(u?mount)"|"${utillinux}/bin/\1"|' blivet/util.py
+    sed -i -r -e 's|"(u?mount)"|"${util-linux}/bin/\1"|' blivet/util.py
   '';
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/boto3/default.nix b/pkgs/development/python-modules/boto3/default.nix
index 713b50c682911..889d829bee995 100644
--- a/pkgs/development/python-modules/boto3/default.nix
+++ b/pkgs/development/python-modules/boto3/default.nix
@@ -13,11 +13,11 @@
 
 buildPythonPackage rec {
   pname =  "boto3";
-  version = "1.15.18"; # N.B: if you change this, change botocore too
+  version = "1.16.25"; # N.B: if you change this, change botocore too
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f56148e2c6b9a2d704218da42f07d72f00270bfddb13bc1bdea20d3327daa51e";
+    sha256 = "05qxcfis4rnkjxh8wyks3gcpg14cshpd2rrhb1adxd0hpq5aprhk";
   };
 
   propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
diff --git a/pkgs/development/python-modules/botocore/default.nix b/pkgs/development/python-modules/botocore/default.nix
index d896367c7c6b4..35d8113e831cb 100644
--- a/pkgs/development/python-modules/botocore/default.nix
+++ b/pkgs/development/python-modules/botocore/default.nix
@@ -12,11 +12,11 @@
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.18.18"; # N.B: if you change this, change boto3 and awscli to a matching version
+  version = "1.19.25"; # N.B: if you change this, change boto3 and awscli to a matching version
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e224754230e7e015836ba20037cac6321e8e2ce9b8627c14d579fcb37249decd";
+    sha256 = "15hd5f2ars1hd3y2gh846fd0ydcgyjmkvncr6rdn4whbb5wkkbyc";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/browsermob-proxy/default.nix b/pkgs/development/python-modules/browsermob-proxy/default.nix
index 68668fce0794e..1c69d70a134a5 100644
--- a/pkgs/development/python-modules/browsermob-proxy/default.nix
+++ b/pkgs/development/python-modules/browsermob-proxy/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchPypi
 , requests
+, urllib3
 }:
 
 buildPythonPackage rec {
@@ -13,7 +14,10 @@ buildPythonPackage rec {
     sha256 = "1bxvmghm834gsfz3pm69772wzhh15p8ci526b25dpk3z4315nd7v";
   };
 
-  propagatedBuildInputs = [ requests ];
+  propagatedBuildInputs = [ (requests.override { urllib3 = urllib3.override {
+    pyopenssl = null;
+    cryptography = null;
+  };}) ];
 
   meta = {
     description = "A library for interacting with Browsermob Proxy";
diff --git a/pkgs/development/python-modules/cftime/default.nix b/pkgs/development/python-modules/cftime/default.nix
index a57e8b8cd9e61..0235c611c610d 100644
--- a/pkgs/development/python-modules/cftime/default.nix
+++ b/pkgs/development/python-modules/cftime/default.nix
@@ -10,11 +10,11 @@
 
 buildPythonPackage rec {
   pname = "cftime";
-  version = "1.2.1";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ab5d5076f7d3e699758a244ada7c66da96bae36e22b9e351ce0ececc36f0a57f";
+    sha256 = "8d6a1144f43b9d7a180d7ceb3aa8015b7133c615fbac231bed184a91129f0207";
   };
 
   checkInputs = [
diff --git a/pkgs/development/python-modules/cliapp/default.nix b/pkgs/development/python-modules/cliapp/default.nix
index 233028235b19c..497306c293a4a 100644
--- a/pkgs/development/python-modules/cliapp/default.nix
+++ b/pkgs/development/python-modules/cliapp/default.nix
@@ -22,7 +22,7 @@ buildPythonPackage {
   doCheck = false;
 
   meta = with stdenv.lib; {
-    homepage = "http://liw.fi/cliapp/";
+    homepage = "https://liw.fi/cliapp/";
     description = "Python framework for Unix command line programs";
     license = licenses.gpl2;
     maintainers = [];
diff --git a/pkgs/development/python-modules/clintermission/default.nix b/pkgs/development/python-modules/clintermission/default.nix
new file mode 100644
index 0000000000000..04e97f4c66937
--- /dev/null
+++ b/pkgs/development/python-modules/clintermission/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonApplication, fetchFromGitHub, isPy3k, prompt_toolkit }:
+
+buildPythonApplication rec {
+  pname = "clintermission";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "sebageek";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "09wl0rpw6c9hab51rs957z64b0v9j4fcbqbn726wnapf4z5w6yxv";
+  };
+
+  propagatedBuildInputs = [ prompt_toolkit ];
+
+  disabled = !isPy3k;
+
+  # repo contains no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "clintermission" ];
+
+  meta = with lib; {
+    description = "Non-fullscreen command-line selection menu";
+    homepage = "https://github.com/sebageek/clintermission";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/cmdtest/default.nix b/pkgs/development/python-modules/cmdtest/default.nix
index ca2402cff6cd3..5c53cafdb4e14 100644
--- a/pkgs/development/python-modules/cmdtest/default.nix
+++ b/pkgs/development/python-modules/cmdtest/default.nix
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with stdenv.lib; {
-    homepage = "http://liw.fi/cmdtest/";
+    homepage = "https://liw.fi/cmdtest/";
     description = "Black box tests Unix command line tools";
     license = licenses.gpl3;
   };
diff --git a/pkgs/development/python-modules/cnvkit/default.nix b/pkgs/development/python-modules/cnvkit/default.nix
index 6677ab06334ff..92af67fa183ad 100644
--- a/pkgs/development/python-modules/cnvkit/default.nix
+++ b/pkgs/development/python-modules/cnvkit/default.nix
@@ -1,5 +1,6 @@
 { lib
-, fetchPypi
+, fetchFromGitHub
+, fetchpatch
 , rPackages
 , rWrapper
 , buildPythonPackage
@@ -15,17 +16,29 @@
 , pillow
 , pomegranate
 , pyfaidx
+, python
+, R
 }:
 
 buildPythonPackage rec {
   pname = "CNVkit";
   version = "0.9.7";
 
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "d68adc0121e17c61a3aa28c0a9ba6526510a5a0df0f0a6eb1818bab71b7e927a";
+  src = fetchFromGitHub {
+    owner = "etal";
+    repo = "cnvkit";
+    rev = "v${version}";
+    sha256 = "022zplgqil5l76vri647cyjx427vnbg5r2gw6lw712d2janvdjm7";
   };
 
+  patches = [
+    # Fix: AttributeError: module 'pandas.io.common' has no attribute 'EmptyDataError'
+    (fetchpatch {
+      url = "https://github.com/etal/cnvkit/commit/392adfffedfa0415e635b72c5027835b0a8d7ab5.patch";
+      sha256 = "0s0gwyy0hybmhc3jij2v9l44b6lkcmclii8bkwsazzj2kc24m2rh";
+    })
+  ];
+
   propagatedBuildInputs = [
     biopython
     numpy
@@ -39,6 +52,7 @@ buildPythonPackage rec {
     future
     pillow
     pomegranate
+    rPackages.DNAcopy
   ];
 
   postPatch = ''
@@ -46,7 +60,16 @@ buildPythonPackage rec {
       --replace "pandas >= 0.20.1, < 0.25.0" "pandas"
   '';
 
-  pythonImportsCheck = [ "cnvlib" ];
+  checkInputs = [ R ];
+
+  checkPhase = ''
+    pushd test/
+    ${python.interpreter} test_io.py
+    ${python.interpreter} test_genome.py
+    ${python.interpreter} test_cnvlib.py
+    ${python.interpreter} test_commands.py
+    ${python.interpreter} test_r.py
+  '';
 
   meta = with lib; {
     homepage = "https://cnvkit.readthedocs.io";
diff --git a/pkgs/development/python-modules/coapthon3/default.nix b/pkgs/development/python-modules/coapthon3/default.nix
new file mode 100644
index 0000000000000..fbca43e4e715e
--- /dev/null
+++ b/pkgs/development/python-modules/coapthon3/default.nix
@@ -0,0 +1,20 @@
+{ buildPythonPackage, cachetools, fetchPypi, lib }:
+
+buildPythonPackage rec {
+  pname = "CoAPthon3";
+  version = "1.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1w6bwwd3qjp4b4fscagqg9wqxpdgvf4sxgzbk2d2rjqwlkyr1lnx";
+  };
+
+  propagatedBuildInputs = [ cachetools ];
+
+  meta = with lib; {
+    description = "Python3 library to the CoAP protocol compliant with the RFC.";
+    homepage = "https://github.com/Tanganelli/${pname}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ urbas ];
+  };
+}
diff --git a/pkgs/development/python-modules/coloredlogs/default.nix b/pkgs/development/python-modules/coloredlogs/default.nix
index c2a329e08f343..3005429658b9c 100644
--- a/pkgs/development/python-modules/coloredlogs/default.nix
+++ b/pkgs/development/python-modules/coloredlogs/default.nix
@@ -6,7 +6,7 @@
 , capturer
 , pytest
 , mock
-, utillinux
+, util-linux
 }:
 
 buildPythonPackage rec {
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     PATH=$PATH:$out/bin pytest . -k "not test_plain_text_output_format \
                                      and not test_auto_install"
   '';
-  checkInputs = [ pytest mock utillinux ];
+  checkInputs = [ pytest mock util-linux ];
 
   propagatedBuildInputs = [ humanfriendly verboselogs capturer ];
 
diff --git a/pkgs/development/python-modules/cryptography/2.9.nix b/pkgs/development/python-modules/cryptography/2.9.nix
index 6a6187e5693d2..3bbb67c524054 100644
--- a/pkgs/development/python-modules/cryptography/2.9.nix
+++ b/pkgs/development/python-modules/cryptography/2.9.nix
@@ -70,5 +70,6 @@ buildPythonPackage rec {
       + replaceStrings [ "." ] [ "-" ] version;
     license = with licenses; [ asl20 bsd3 psfl ];
     maintainers = with maintainers; [ primeos ];
+    knownVulnerabilities = [ "CVE-2020-25659" "https://github.com/advisories/GHSA-hggm-jpg3-v476" ];
   };
 }
diff --git a/pkgs/development/python-modules/crytic-compile/default.nix b/pkgs/development/python-modules/crytic-compile/default.nix
index e6f82c6d8ad8e..b9345e78eab0e 100644
--- a/pkgs/development/python-modules/crytic-compile/default.nix
+++ b/pkgs/development/python-modules/crytic-compile/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, pysha3 }:
+{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, pysha3, setuptools }:
 
 buildPythonPackage rec {
   pname = "crytic-compile";
@@ -13,7 +13,7 @@ buildPythonPackage rec {
     sha256 = "01mis7bqsh0l5vjl6jwibzy99djza35fxmywy56q8k4jbxwmdcna";
   };
 
-  propagatedBuildInputs = [ pysha3 ];
+  propagatedBuildInputs = [ pysha3 setuptools ];
 
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/discordpy/default.nix b/pkgs/development/python-modules/discordpy/default.nix
index fd31bb40a92c7..e2a4625c60e4f 100644
--- a/pkgs/development/python-modules/discordpy/default.nix
+++ b/pkgs/development/python-modules/discordpy/default.nix
@@ -5,12 +5,11 @@
 , withVoice ? true, libopus
 , aiohttp
 , websockets
-, pynacl
 }:
 
 buildPythonPackage rec {
   pname = "discord.py";
-  version = "1.3.4";
+  version = "1.5.1";
   disabled = pythonOlder "3.5.3";
 
   # only distributes wheels on pypi now
@@ -18,7 +17,7 @@ buildPythonPackage rec {
     owner = "Rapptz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1i4h6vq681x8s05wi0n3ykavsxjh9hxdxn6banwjcqzhxzkyhsxi";
+    sha256 = "1bidyclwv20p1kfphj21r5gm3kr2vxx0zd151wg7fcngbbx7gmza";
   };
 
   propagatedBuildInputs = [ aiohttp websockets ];
@@ -31,7 +30,6 @@ buildPythonPackage rec {
       --replace "ctypes.util.find_library('opus')" "'${libopus}/lib/libopus.so.0'"
   '';
 
-
   # only have integration tests with discord
   doCheck = false;
 
@@ -46,9 +44,10 @@ buildPythonPackage rec {
     "discord.ext.commands.bot"
   ];
 
-  meta = {
+  meta = with lib; {
     description = "A python wrapper for the Discord API";
-    homepage    = "https://discordpy.rtfd.org/";
-    license     = lib.licenses.mit;
+    homepage = "https://discordpy.rtfd.org/";
+    maintainers = [ maintainers.ivar ];
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/development/python-modules/dogpile.cache/default.nix b/pkgs/development/python-modules/dogpile.cache/default.nix
index 1bbe6da3a9c4d..f36e1347be9fb 100644
--- a/pkgs/development/python-modules/dogpile.cache/default.nix
+++ b/pkgs/development/python-modules/dogpile.cache/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "dogpile.cache";
-  version = "1.1.0";
+  version = "1.1.1";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "eba3eb532be75a930f7a70c40c9a66829a3f7281650ad3cd3a786b2e4ba68e83";
+    sha256 = "40147b19696f387415a7efaaa4cf8ea0b5d31bdd1b53e5187e75d48ddfee9f0e";
   };
 
   # Disable concurrency tests that often fail,
diff --git a/pkgs/development/python-modules/emv/default.nix b/pkgs/development/python-modules/emv/default.nix
new file mode 100644
index 0000000000000..6dfe39f8b6b1d
--- /dev/null
+++ b/pkgs/development/python-modules/emv/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub
+, click, enum-compat, pyscard, pycountry, terminaltables
+, pytestCheckHook, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "emv";
+  version = "1.0.11";
+  disabled = pythonOlder "3.4";
+
+  src = fetchFromGitHub {
+    owner = "russss";
+    repo = "python-emv";
+    rev = "v${version}";
+    hash = "sha256:1715hcba3fdi0i5awnrjdjnk74p66sxm9349pd8bb717zrh4gpj7";
+  };
+
+  checkInputs = [ pytestCheckHook ];
+  propagatedBuildInputs = [
+    enum-compat
+    click
+    pyscard
+    pycountry
+    terminaltables
+  ];
+
+  # argparse is part of the standardlib
+  prePatch = ''
+    substituteInPlace setup.py \
+      --replace '"argparse==1.4.0",' ""
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/russss/python-emv";
+    description = "Implementation of the EMV chip-and-pin smartcard protocol";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lukegb ];
+  };
+}
diff --git a/pkgs/development/python-modules/enamlx/default.nix b/pkgs/development/python-modules/enamlx/default.nix
index a9cfafa020e29..344000fa118eb 100644
--- a/pkgs/development/python-modules/enamlx/default.nix
+++ b/pkgs/development/python-modules/enamlx/default.nix
@@ -17,6 +17,12 @@ buildPythonPackage rec {
     sha256 = "1rlrx3cw6h1zl9svnqbzwdfy8469qa1y7w6576lbhdwpfhpipscy";
   };
 
+  patches = [
+    # Minimally modified version of https://github.com/frmdstryr/enamlx/commit/16df11227b8cee724624541d274e481802ea67e3
+    # (without the change to setup.py), already on master and expected in the first post-0.4.3 release
+    ./replace-unicode-with-str.patch
+  ];
+
   propagatedBuildInputs = [
     enaml
     # Until https://github.com/inkcut/inkcut/issues/105 perhaps
diff --git a/pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch b/pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch
new file mode 100644
index 0000000000000..52df6e9a50e68
--- /dev/null
+++ b/pkgs/development/python-modules/enamlx/replace-unicode-with-str.patch
@@ -0,0 +1,274 @@
+From 16df11227b8cee724624541d274e481802ea67e3 Mon Sep 17 00:00:00 2001
+From: frmdstryr <frmdstryr@protonmail.com>
+Date: Tue, 3 Nov 2020 21:41:52 -0500
+Subject: [PATCH] Replace Unicode with Str
+
+---
+ enamlx/widgets/abstract_item.py      |  4 ++--
+ enamlx/widgets/console.py            |  4 ++--
+ enamlx/widgets/graphics_view.py      |  8 ++++----
+ enamlx/widgets/plot_area.py          | 14 +++++++-------
+ examples/occ_viewer/advanced.enaml   | 12 ++++++------
+ examples/occ_viewer/occ/part.py      |  6 +++---
+ examples/plot_area/plot_area.enaml   |  2 +-
+ examples/table_view/table_view.enaml |  6 +++---
+ examples/tree_view/tree_view.enaml   |  6 +++---
+ setup.py                             |  2 +-
+ 10 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/enamlx/widgets/abstract_item.py b/enamlx/widgets/abstract_item.py
+index 29a3d87..67a5c6e 100644
+--- a/enamlx/widgets/abstract_item.py
++++ b/enamlx/widgets/abstract_item.py
+@@ -6,7 +6,7 @@
+ Created on Aug 24, 2015
+ """
+ from atom.api import (
+-    Int, Enum, Bool, Unicode, Typed, 
++    Int, Enum, Bool, Str, Typed, 
+     Coerced, Event, Property, ForwardInstance, observe
+ )
+ from enaml.icon import Icon
+@@ -96,7 +96,7 @@ class AbstractWidgetItem(AbstractWidgetItemGroup):
+     column = d_(Int(), writable=False)
+     
+     #: Text to display within the cell
+-    text = d_(Unicode())
++    text = d_(Str())
+     
+     #: Text alignment within the cell
+     text_alignment = d_(Enum(*[(h, v)
+diff --git a/enamlx/widgets/console.py b/enamlx/widgets/console.py
+index bc61e90..2f1e981 100644
+--- a/enamlx/widgets/console.py
++++ b/enamlx/widgets/console.py
+@@ -7,7 +7,7 @@
+ """
+ 
+ from atom.api import (
+-    Instance, Coerced, Int, Enum, Unicode, Dict, Bool,
++    Instance, Coerced, Int, Enum, Str, Dict, Bool,
+     Typed, ForwardTyped, observe
+ )
+ from enaml.core.api import d_
+@@ -47,7 +47,7 @@ class Console(Container):
+     proxy = Typed(ProxyConsole)
+     
+     #: Font family, leave blank for default
+-    font_family = d_(Unicode())
++    font_family = d_(Str())
+     
+     #: Font size, leave 0 for default
+     font_size = d_(Int(0))
+diff --git a/enamlx/widgets/graphics_view.py b/enamlx/widgets/graphics_view.py
+index f7e3e47..e672c63 100644
+--- a/enamlx/widgets/graphics_view.py
++++ b/enamlx/widgets/graphics_view.py
+@@ -7,7 +7,7 @@
+ import sys
+ from atom.api import (
+     Atom, Float, Int, Typed, Bool, Coerced, ForwardTyped, Enum, List, IntEnum,
+-    Instance, Unicode, Value, Event, Property, observe, set_default
++    Instance, Str, Value, Event, Property, observe, set_default
+ )
+ from enaml.colors import ColorMember
+ from enaml.core.declarative import d_, d_func
+@@ -419,10 +419,10 @@ class GraphicsItem(ToolkitObject, ConstrainableMixin):
+     visible = d_(Bool(True))
+     
+     #: Tool tip
+-    tool_tip = d_(Unicode())
++    tool_tip = d_(Str())
+     
+     #: Status tip
+-    status_tip = d_(Unicode())
++    status_tip = d_(Str())
+     
+     # --------------------------------------------------------------------------
+     # Item interaction
+@@ -919,7 +919,7 @@ class GraphicsTextItem(AbstractGraphicsShapeItem):
+     proxy = Typed(ProxyGraphicsTextItem)
+     
+     #: Text
+-    text = d_(Unicode())
++    text = d_(Str())
+     
+     #: Font
+     font = d_(FontMember())
+diff --git a/enamlx/widgets/plot_area.py b/enamlx/widgets/plot_area.py
+index 5136693..383957b 100644
+--- a/enamlx/widgets/plot_area.py
++++ b/enamlx/widgets/plot_area.py
+@@ -8,7 +8,7 @@
+ import sys
+ from atom.atom import set_default
+ from atom.api import (Callable, Int, Tuple, Instance, Enum, Float,
+-                      ContainerList, Bool, FloatRange, Unicode, Dict, Typed,
++                      ContainerList, Bool, FloatRange, Str, Dict, Typed,
+                       ForwardTyped, observe)
+ from enaml.core.declarative import d_
+ from enaml.widgets.api import Container
+@@ -41,10 +41,10 @@ class PlotArea(Container):
+ 
+ class PlotItem(Control):
+     #: Title of data series
+-    title = d_(Unicode())
++    title = d_(Str())
+ 
+     #: Name
+-    name = d_(Unicode())
++    name = d_(Str())
+ 
+     #: Row in plot area
+     row = d_(Int(0))
+@@ -89,10 +89,10 @@ class PlotItem(Control):
+     #: Show legend
+     show_legend = d_(Bool(False))
+ 
+-    label_left = d_(Unicode())
+-    label_right = d_(Unicode())
+-    label_top = d_(Unicode())
+-    label_bottom = d_(Unicode())
++    label_left = d_(Str())
++    label_right = d_(Str())
++    label_top = d_(Str())
++    label_bottom = d_(Str())
+ 
+     # H, V
+     grid = d_(Tuple(bool, default=(False, False)))
+diff --git a/examples/occ_viewer/advanced.enaml b/examples/occ_viewer/advanced.enaml
+index 872d44d..f1c48d5 100644
+--- a/examples/occ_viewer/advanced.enaml
++++ b/examples/occ_viewer/advanced.enaml
+@@ -15,7 +15,7 @@ is then used to unroll a list of these controls into the body of a form.
+ 
+ << autodoc-me >>
+ """
+-from atom.api import Atom, Bool, Enum, Event, Float, Int, Str, Unicode
++from atom.api import Atom, Bool, Enum, Event, Float, Int, Str, Str
+ 
+ from enaml.core.api import DynamicTemplate
+ from enaml.stdlib.fields import FloatField
+@@ -73,8 +73,8 @@ template FormControl(Attr, MemberType: Str):
+         text :: setattr(model, Attr, str(text))
+ 
+ 
+-template FormControl(Attr, MemberType: Unicode):
+-    """ A form control template specialization for Unicode members.
++template FormControl(Attr, MemberType: Str):
++    """ A form control template specialization for Str members.
+ 
+     This control uses a Field to represent the value.
+ 
+@@ -174,7 +174,7 @@ def form_spec(obtype, model):
+     
+     typemap = {int:Int,
+                float:Float,
+-               unicode:Unicode,
++               unicode:Str,
+                str:Str}
+     for name, member in obtype.members().iteritems():
+         if (not name.startswith('_') 
+@@ -263,14 +263,14 @@ class FooModel(Atom):
+     ham = Int(42)
+     first = Str('first')
+     last = Str('last')
+-    owner = Unicode('owner')
++    owner = Str('owner')
+     time = Float(42.56)
+     click = Bool()
+     clack = Bool()
+ 
+ 
+ class BarModel(Atom):
+-    name = Unicode('name')
++    name = Str('name')
+     trigger = Event()
+     choices = Enum('first', 'second', 'third')
+     def _observe_trigger(self, change):
+diff --git a/examples/occ_viewer/occ/part.py b/examples/occ_viewer/occ/part.py
+index 1fe2b85..144354f 100644
+--- a/examples/occ_viewer/occ/part.py
++++ b/examples/occ_viewer/occ/part.py
+@@ -5,7 +5,7 @@
+ '''
+ 
+ from atom.api import (
+-    Typed, ForwardTyped, Unicode
++    Typed, ForwardTyped, Str
+ )
+ from enaml.core.declarative import d_
+ 
+@@ -26,10 +26,10 @@ class Part(ToolkitObject):
+     proxy = Typed(ProxyPart)
+     
+     #: Optional name of the part
+-    name = d_(Unicode())
++    name = d_(Str())
+     
+     #: Optional description of the part
+-    description = d_(Unicode())
++    description = d_(Str())
+     
+     @property
+     def shapes(self):
+diff --git a/examples/plot_area/plot_area.enaml b/examples/plot_area/plot_area.enaml
+index 2085c8f..b5cd3c4 100644
+--- a/examples/plot_area/plot_area.enaml
++++ b/examples/plot_area/plot_area.enaml
+@@ -2,7 +2,7 @@
+ Demonstrating the examples from pyqtgraph
+ """
+ 
+-from atom.api import (Atom, Unicode, Range, List, Bool)
++from atom.api import (Atom, Str, Range, List, Bool)
+ 
+ from enaml.widgets.api import (
+     Window, Container, DockArea,DockItem,PushButton, CheckBox, RadioButton
+diff --git a/examples/table_view/table_view.enaml b/examples/table_view/table_view.enaml
+index 6d7a35e..6fef544 100644
+--- a/examples/table_view/table_view.enaml
++++ b/examples/table_view/table_view.enaml
+@@ -2,7 +2,7 @@ import os
+ import time
+ import random
+ from threading import Thread
+-from atom.api import (Atom, Unicode, Range, ContainerList, Bool)
++from atom.api import (Atom, Str, Range, ContainerList, Bool)
+ 
+ from enamlx.widgets.table_view import (
+     TableView, TableViewRow, TableViewItem
+@@ -38,9 +38,9 @@ class Person(Atom):
+     """ A simple class representing a person object.
+ 
+     """
+-    last_name = Unicode()
++    last_name = Str()
+ 
+-    first_name = Unicode()
++    first_name = Str()
+ 
+     age = Range(low=0)
+ 
+diff --git a/examples/tree_view/tree_view.enaml b/examples/tree_view/tree_view.enaml
+index 37f991f..e88e1fd 100644
+--- a/examples/tree_view/tree_view.enaml
++++ b/examples/tree_view/tree_view.enaml
+@@ -1,5 +1,5 @@
+ import os
+-from atom.api import (Atom, Unicode, Range, List, Bool, ForwardInstance)
++from atom.api import (Atom, Str, Range, List, Bool, ForwardInstance)
+ 
+ from enamlx.widgets.api import (
+     TreeView, TreeViewItem, TreeViewColumn, 
+@@ -33,9 +33,9 @@ class Person(Atom):
+     """ A simple class representing a person object.
+ 
+     """
+-    last_name = Unicode()
++    last_name = Str()
+ 
+-    first_name = Unicode()
++    first_name = Str()
+     
+     children = List(ForwardInstance(lambda:Person))
diff --git a/pkgs/development/python-modules/executor/default.nix b/pkgs/development/python-modules/executor/default.nix
index 3e14074f186c7..610d9b0b096cb 100644
--- a/pkgs/development/python-modules/executor/default.nix
+++ b/pkgs/development/python-modules/executor/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "executor";
-  version = "23.1";
+  version = "23.2";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "xolox";
     repo = "python-executor";
     rev = version;
-    sha256 = "1jfmagw126di0qd82bydwvryqcxc54pqja3rbx3ny3fv1ahi5s7k";
+    sha256 = "1mr0662c5l5zx0wjapcprp8p2xawfd0im3616df5sgv79fqzwfqs";
   };
 
   propagatedBuildInputs = [ coloredlogs property-manager fasteners ];
diff --git a/pkgs/development/python-modules/genanki/default.nix b/pkgs/development/python-modules/genanki/default.nix
index 201f7646e0107..43fc1a0f7a870 100644
--- a/pkgs/development/python-modules/genanki/default.nix
+++ b/pkgs/development/python-modules/genanki/default.nix
@@ -4,11 +4,11 @@
 
 buildPythonPackage rec {
   pname = "genanki";
-  version = "0.9.0";
+  version = "0.9.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e8bd0d117b2ddfc6bfebe86344979134c7acbd9e4c6cd04578df2cd6077785c1";
+    sha256 = "c944b74a5735e30ce098149788b89192fb3ba162fefb30f62105451a4a5b4c62";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/git-annex-adapter/default.nix b/pkgs/development/python-modules/git-annex-adapter/default.nix
index 318bafb98efa3..e5d9910024a5f 100644
--- a/pkgs/development/python-modules/git-annex-adapter/default.nix
+++ b/pkgs/development/python-modules/git-annex-adapter/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, substituteAll
-, python, utillinux, pygit2, gitMinimal, git-annex, cacert
+, python, util-linux, pygit2, gitMinimal, git-annex, cacert
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   checkInputs = [
     gitMinimal
-    utillinux # `rev` is needed in tests/test_process.py
+    util-linux # `rev` is needed in tests/test_process.py
   ];
 
   propagatedBuildInputs = [ pygit2 cacert ];
diff --git a/pkgs/development/python-modules/gradient_statsd/default.nix b/pkgs/development/python-modules/gradient_statsd/default.nix
index 0521b4a57d6f4..14623ff625f54 100644
--- a/pkgs/development/python-modules/gradient_statsd/default.nix
+++ b/pkgs/development/python-modules/gradient_statsd/default.nix
@@ -16,6 +16,9 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "gradient_statsd" ];
 
+  # Pypi does not contain tests
+  doCheck = false;
+
   meta = with stdenv.lib; {
     description = "Wrapper around the DogStatsd client";
     homepage    = "https://paperspace.com";
diff --git a/pkgs/development/python-modules/ha-ffmpeg/default.nix b/pkgs/development/python-modules/ha-ffmpeg/default.nix
index cf119c1dec56b..01d0343b171f7 100644
--- a/pkgs/development/python-modules/ha-ffmpeg/default.nix
+++ b/pkgs/development/python-modules/ha-ffmpeg/default.nix
@@ -3,13 +3,13 @@
 
 buildPythonPackage rec {
   pname = "ha-ffmpeg";
-  version = "2.0";
+  version = "3.0.2";
 
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "230f2fa990c9caaff1c67c2227b64756062248083849651a9bec7d599e519a42";
+    sha256 = "8d92f2f5790da038d828ac862673e0bb43e8e972e4c70b1714dd9a0fb776c8d1";
   };
 
   buildInputs = [ ffmpeg_3 ];
diff --git a/pkgs/development/python-modules/imantics/default.nix b/pkgs/development/python-modules/imantics/default.nix
new file mode 100644
index 0000000000000..59eb3afaa0ecc
--- /dev/null
+++ b/pkgs/development/python-modules/imantics/default.nix
@@ -0,0 +1,46 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, numpy
+, opencv3
+, sphinx_rtd_theme
+, lxml
+, xmljson
+}:
+
+buildPythonPackage rec {
+  pname = "imantics";
+  version = "0.1.12";
+
+  src = fetchFromGitHub {
+    owner = "jsbroks";
+    repo = "imantics";
+    rev = "76d81036d8f92854d63ad9938dd76c718f8b482e";
+    sha256 = "1zv2gj8cbakhh2fyr2611cbqhfk37a56x973ny9n43y70n26pzm8";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+    opencv3
+    sphinx_rtd_theme
+    lxml
+    xmljson
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'opencv-python>=3'," ""
+  '';
+
+  # failing on NixOS
+  doCheck = false;
+
+  pythonImportsCheck = [ "imantics" ];
+
+  meta = with lib; {
+    description = "Convert and visualize many annotation formats for object dectection and localization";
+    homepage = "https://github.com/jsbroks/imantics";
+    license = with licenses; [ mit ];
+    maintainers = [ maintainers.rakesh4g ];
+  };
+}
diff --git a/pkgs/development/python-modules/jupyterlab-git/default.nix b/pkgs/development/python-modules/jupyterlab-git/default.nix
index b69572df74584..3e218a6b4a326 100644
--- a/pkgs/development/python-modules/jupyterlab-git/default.nix
+++ b/pkgs/development/python-modules/jupyterlab-git/default.nix
@@ -1,4 +1,4 @@
-{ lib
+{ stdenv
 , buildPythonPackage
 , fetchPypi
 , pythonOlder
@@ -10,16 +10,19 @@
 
 buildPythonPackage rec {
   pname = "jupyterlab_git";
-  version = "0.22.3";
+  version = "0.23.1";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "434ff9edd1190809e02e0cbf50090c28de48a51e151a1f904ac66e902244398d";
+    sha256 = "3c709c33df0b838e50f76fa2e7e0302bd3c32ec24e161ee0e8f436a3844e8b16";
   };
 
   propagatedBuildInputs = [ notebook nbdime git ];
 
+  # all Tests on darwin fail or are skipped due to sandbox
+  doCheck = !stdenv.isDarwin;
+
   checkInputs = [ pytest ];
 
   checkPhase = ''
@@ -28,7 +31,7 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "jupyterlab_git" ];
 
-  meta = with lib; {
+  meta = with stdenv.lib; {
     description = "Jupyter lab extension for version control with Git.";
     license = with licenses; [ bsd3 ];
     homepage = "https://github.com/jupyterlab/jupyterlab-git";
diff --git a/pkgs/development/python-modules/larch/default.nix b/pkgs/development/python-modules/larch/default.nix
index a94b076ded3d5..3be8b2404192c 100644
--- a/pkgs/development/python-modules/larch/default.nix
+++ b/pkgs/development/python-modules/larch/default.nix
@@ -23,7 +23,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with stdenv.lib; {
-    homepage = "http://liw.fi/larch/";
+    homepage = "https://liw.fi/larch/";
     description = "Python B-tree library";
     license = licenses.gpl3;
     maintainers = [];
diff --git a/pkgs/development/python-modules/libsass/default.nix b/pkgs/development/python-modules/libsass/default.nix
new file mode 100644
index 0000000000000..9feb5b1d24253
--- /dev/null
+++ b/pkgs/development/python-modules/libsass/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildPythonPackage, fetchFromGitHub, libsass, six, pytest, werkzeug }:
+
+buildPythonPackage rec {
+  pname = "libsass";
+  version = "0.20.1";
+
+  src = fetchFromGitHub {
+    owner = "sass";
+    repo = "libsass-python";
+    rev = version;
+    sha256 = "1r0kgl7i6nnhgjl44sjw57k08gh2qr7l8slqih550dyxbf1akbxh";
+  };
+
+  buildInputs = [ libsass ];
+
+  propagatedBuildInputs = [ six ];
+
+  preBuild = ''
+    export SYSTEM_SASS=true;
+  '';
+
+  checkInputs = [
+    pytest
+    werkzeug
+  ];
+
+  checkPhase = ''
+    pytest sasstests.py
+  '';
+
+  meta = with lib; {
+    description = "A straightforward binding of libsass for Python. Compile Sass/SCSS in Python with no Ruby stack at all!";
+    homepage = "https://sass.github.io/libsass-python/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/mlxtend/default.nix b/pkgs/development/python-modules/mlxtend/default.nix
new file mode 100644
index 0000000000000..2bfd122491010
--- /dev/null
+++ b/pkgs/development/python-modules/mlxtend/default.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, pytestCheckHook
+, scipy
+, numpy
+, scikitlearn
+, pandas
+, matplotlib
+, joblib
+}:
+
+buildPythonPackage rec {
+  pname = "mlxtend";
+  version = "0.17.3";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "rasbt";
+    repo = pname;
+    rev = version;
+    sha256 = "1515wgmj5rhwpmky7apmmvys1630sfg534fai6559s13hp11pdcl";
+  };
+
+  checkInputs = [ pytestCheckHook ];
+  # image tests download files over the network
+  pytestFlagsArray = [ "-sv" "--ignore=mlxtend/image" ];
+  # Fixed in master, but failing in release version
+  # see: https://github.com/rasbt/mlxtend/pull/721
+  disabledTests = [ "test_variance_explained_ratio" ];
+
+  propagatedBuildInputs = [
+    scipy
+    numpy
+    scikitlearn
+    pandas
+    matplotlib
+    joblib
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A library of Python tools and extensions for data science";
+    homepage = "https://github.com/rasbt/mlxtend";
+    license= licenses.bsd3;
+    maintainers = with maintainers; [ evax ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/python-modules/mss/default.nix b/pkgs/development/python-modules/mss/default.nix
index 1604a006567e5..a0d74719e7942 100644
--- a/pkgs/development/python-modules/mss/default.nix
+++ b/pkgs/development/python-modules/mss/default.nix
@@ -2,16 +2,14 @@
 
 buildPythonPackage rec {
   pname = "mss";
-  version = "6.0.0";
+  version = "6.1.0";
   disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0dicp55adbqxb7hqlck95hngb1klv5s26lszw3xim30k18bwqaxl";
+    sha256 = "aebd069f3e05667fe9c7b9fa4b1771fe42a4710ce1058ce0236936ce06fa5394";
   };
 
-  propagatedBuildInputs = [ ];
-
   # By default it attempts to build Windows-only functionality
   prePatch = ''
     rm mss/windows.py
@@ -22,7 +20,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Cross-platform multiple screenshots module in pure Python";
-    homepage = "https://github.com/BoboTiG/mss/";
+    homepage = "https://github.com/BoboTiG/python-mss";
     license = licenses.mit;
     maintainers = with maintainers; [ austinbutler ];
   };
diff --git a/pkgs/development/python-modules/nilearn/default.nix b/pkgs/development/python-modules/nilearn/default.nix
index c01715470f60d..e1efdf26de804 100644
--- a/pkgs/development/python-modules/nilearn/default.nix
+++ b/pkgs/development/python-modules/nilearn/default.nix
@@ -1,26 +1,17 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytest, nose
-, nibabel, numpy, pandas, scikitlearn, scipy, matplotlib, joblib }:
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, matplotlib
+, nibabel, numpy, pandas, scikitlearn, scipy, joblib, requests }:
 
 buildPythonPackage rec {
   pname = "nilearn";
-  version = "0.6.2";
+  version = "0.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cfc6cfda59a6f4247189f8ccf92e364de450460a15c0ec21bdb857c420dd198c";
+    sha256 = "1rhpy6na7hkhc211ri14zghvmb2fxkh995wi09pkc68klf1dzjg7";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py --replace "required_packages.append('sklearn')" ""
-  '';
-  # https://github.com/nilearn/nilearn/issues/2288
-
-  # disable some failing tests
-  checkPhase = ''
-    pytest nilearn/tests -k 'not test_cache_mixin_with_expand_user'  # accesses ~/
-  '';
-
-  checkInputs = [ pytest nose ];
+  checkInputs = [ pytestCheckHook ];
+  disabledTests = [ "test_clean_confounds" ];  # https://github.com/nilearn/nilearn/issues/2608
 
   propagatedBuildInputs = [
     joblib
@@ -28,12 +19,13 @@ buildPythonPackage rec {
     nibabel
     numpy
     pandas
+    requests
     scikitlearn
     scipy
   ];
 
-  meta = with stdenv.lib; {
-    homepage = "http://nilearn.github.io";
+  meta = with lib; {
+    homepage = "https://nilearn.github.io";
     description = "A module for statistical learning on neuroimaging data";
     license = licenses.bsd3;
   };
diff --git a/pkgs/development/python-modules/nuitka/default.nix b/pkgs/development/python-modules/nuitka/default.nix
index f5726b91b9c19..890180d0dec97 100644
--- a/pkgs/development/python-modules/nuitka/default.nix
+++ b/pkgs/development/python-modules/nuitka/default.nix
@@ -27,7 +27,7 @@ in buildPythonPackage rec {
   postPatch = ''
     patchShebangs tests/run-tests
   '' + stdenv.lib.optionalString stdenv.isLinux ''
-    substituteInPlace nuitka/plugins/standard/ImplicitImports.py --replace 'locateDLL("uuid")' '"${pkgs.utillinux.out}/lib/libuuid.so"'
+    substituteInPlace nuitka/plugins/standard/ImplicitImports.py --replace 'locateDLL("uuid")' '"${pkgs.util-linux.out}/lib/libuuid.so"'
   '';
 
   # We do not want any wrappers here.
diff --git a/pkgs/development/python-modules/pinboard/default.nix b/pkgs/development/python-modules/pinboard/default.nix
index af144e0a86697..8f177dab8bc36 100644
--- a/pkgs/development/python-modules/pinboard/default.nix
+++ b/pkgs/development/python-modules/pinboard/default.nix
@@ -18,6 +18,6 @@ buildPythonPackage rec {
     description = "A Python wrapper for Pinboard.in";
     maintainers = with maintainers; [ djanatyn ];
     license = licenses.asl20;
-    homepage = "http://github.com/lionheart/pinboard.py";
+    homepage = "https://github.com/lionheart/pinboard.py";
   };
 }
diff --git a/pkgs/development/python-modules/plaid-python/default.nix b/pkgs/development/python-modules/plaid-python/default.nix
index 96e7335604721..6d9756d11fba2 100644
--- a/pkgs/development/python-modules/plaid-python/default.nix
+++ b/pkgs/development/python-modules/plaid-python/default.nix
@@ -1,12 +1,12 @@
 { lib, buildPythonPackage, fetchPypi, requests, pytest }:
 
 buildPythonPackage rec {
-  version = "6.0.0";
+  version = "7.1.0";
   pname = "plaid-python";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a0ay39k50hbxxaxz09m2azz5c08yqki2gincziv6g381yrlj68s";
+    sha256 = "04mm1iqpmd6qwxmkm85k263avd42xvsmjsa24r8ggfjcw0w4lq6j";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/ppscore/default.nix b/pkgs/development/python-modules/ppscore/default.nix
new file mode 100644
index 0000000000000..3fd047402ee77
--- /dev/null
+++ b/pkgs/development/python-modules/ppscore/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, pandas
+, scikitlearn
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "ppscore";
+  version = "1.1.1";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "8080labs";
+    repo = pname;
+    rev = version;
+    sha256 = "11y6axhj0nlagf7ax6gas1g06krrmddb1jlmf0mmrmyi7z0vldk2";
+  };
+
+  checkInputs = [ pytestCheckHook ];
+
+  propagatedBuildInputs = [
+    pandas
+    scikitlearn
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A Python implementation of the Predictive Power Score (PPS)";
+    homepage = "https://github.com/8080labs/ppscore/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ evax ];
+  };
+}
diff --git a/pkgs/development/python-modules/pure-eval/default.nix b/pkgs/development/python-modules/pure-eval/default.nix
index 2807611f49338..6e504951cdbe8 100644
--- a/pkgs/development/python-modules/pure-eval/default.nix
+++ b/pkgs/development/python-modules/pure-eval/default.nix
@@ -22,7 +22,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Safely evaluate AST nodes without side effects";
-    homepage = "http://github.com/alexmojaki/pure_eval";
+    homepage = "https://github.com/alexmojaki/pure_eval";
     license = licenses.mit;
     maintainers = with maintainers; [ gebner ];
   };
diff --git a/pkgs/development/python-modules/pure-pcapy3/default.nix b/pkgs/development/python-modules/pure-pcapy3/default.nix
index 71673da7abe0a..43d6244ebf0c3 100644
--- a/pkgs/development/python-modules/pure-pcapy3/default.nix
+++ b/pkgs/development/python-modules/pure-pcapy3/default.nix
@@ -11,7 +11,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Pure Python reimplementation of pcapy. This package is API compatible and a drop-in replacement.";
-    homepage = "http://bitbucket.org/viraptor/pure-pcapy";
+    homepage = "https://bitbucket.org/viraptor/pure-pcapy";
     license = licenses.bsd2;
     maintainers = with maintainers; [ etu ];
   };
diff --git a/pkgs/development/python-modules/pwntools/default.nix b/pkgs/development/python-modules/pwntools/default.nix
index fa4e4cc94191a..11c3f1dd8eb09 100644
--- a/pkgs/development/python-modules/pwntools/default.nix
+++ b/pkgs/development/python-modules/pwntools/default.nix
@@ -24,12 +24,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "4.2.2";
+  version = "4.3.0";
   pname = "pwntools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0iv802v67x2fy35q7m27j6xnz94l3w509z8c1286schgav1dw7f4";
+    sha256 = "007xbm4pg28bhv7j7m8gmzsmr9x7pdb7rkm5y80mca8kb7gw59xv";
   };
 
   # Upstream has set an upper bound on unicorn because of https://github.com/Gallopsled/pwntools/issues/1538,
diff --git a/pkgs/development/python-modules/pyhs100/default.nix b/pkgs/development/python-modules/pyhs100/default.nix
index 2e6d7164b8bf1..429f3a8ebb9f3 100644
--- a/pkgs/development/python-modules/pyhs100/default.nix
+++ b/pkgs/development/python-modules/pyhs100/default.nix
@@ -4,14 +4,14 @@
 
 buildPythonPackage rec {
   pname = "pyHS100";
-  version = "0.3.5.1";
+  version = "0.3.5.2";
   disabled = pythonOlder "3.5";
 
   src = fetchFromGitHub {
     owner = "GadgetReactor";
     repo = pname;
     rev = version;
-    sha256 = "1vddr9sjn6337i1vx0mm7pb3qibvl2gx6nx18vm4fajgv9vcjxny";
+    sha256 = "0z98hzvkp6jmllyd4x4y0f5n6nnxrizw6g5l2clxdn93mifjavp0";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pypandoc/default.nix b/pkgs/development/python-modules/pypandoc/default.nix
index b4788999a353a..3da9c3ae0a7cf 100644
--- a/pkgs/development/python-modules/pypandoc/default.nix
+++ b/pkgs/development/python-modules/pypandoc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub
+{ stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch
 , pandoc, haskellPackages, texlive }:
 
 buildPythonPackage rec {
@@ -12,6 +12,14 @@ buildPythonPackage rec {
     sha256 = "1lpslfns6zxx7b0xr13bzg921lwrj5am8za0b2dviywk6iiib0ld";
   };
 
+  # https://github.com/bebraw/pypandoc/pull/204
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/sternenseemann/pypandoc/commit/e422e277dd667c77dae11fad931dbb6015e9a784.patch";
+      sha256 = "11l11kh2a4k0h1g4yvijb60076kzxlkrvda3x6dc1s8fz352bpg3";
+    })
+  ];
+
   postPatch = ''
     # set pandoc path statically
     sed -i '/^__pandoc_path = None$/c__pandoc_path = "${pandoc}/bin/pandoc"' pypandoc/__init__.py
diff --git a/pkgs/development/python-modules/pyqtgraph/default.nix b/pkgs/development/python-modules/pyqtgraph/default.nix
index d1850c1288d6b..80f9142948482 100644
--- a/pkgs/development/python-modules/pyqtgraph/default.nix
+++ b/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -1,10 +1,10 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
-, scipy
 , numpy
-, pyqt4
 , pyopengl
+, pyqt5
+, scipy
 }:
 
 buildPythonPackage rec {
@@ -16,13 +16,16 @@ buildPythonPackage rec {
     sha256 = "0p5k73wjfh0zzjvby8b5107cx7x0c2rdj66zh1nc8y95i0anf2na";
   };
 
-  propagatedBuildInputs = [ scipy numpy pyqt4 pyopengl ];
+  propagatedBuildInputs = [ numpy pyopengl pyqt5 scipy ];
+
+  doCheck = false;  # tries to create windows (QApps) on collection, which fails (probably due to no display)
 
-  doCheck = false;  # "PyQtGraph requires either PyQt4 or PySide; neither package could be imported."
+  pythonImportsCheck = [ "pyqtgraph" ];
 
   meta = with stdenv.lib; {
     description = "Scientific Graphics and GUI Library for Python";
     homepage = "http://www.pyqtgraph.org/";
+    changelog = "https://github.com/pyqtgraph/pyqtgraph/blob/master/CHANGELOG";
     license = licenses.mit;
     platforms = platforms.unix;
     maintainers = with maintainers; [ koral ];
diff --git a/pkgs/development/python-modules/pysaml2/default.nix b/pkgs/development/python-modules/pysaml2/default.nix
index 593911c064ec4..f30fddc1efd85 100644
--- a/pkgs/development/python-modules/pysaml2/default.nix
+++ b/pkgs/development/python-modules/pysaml2/default.nix
@@ -49,7 +49,8 @@ buildPythonPackage rec {
   checkPhase = ''
     py.test -k "not test_load_extern_incommon \
             and not test_load_remote_encoding \
-            and not test_load_external"
+            and not test_load_external \
+            and not test_conf_syslog"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/pyscard/default.nix b/pkgs/development/python-modules/pyscard/default.nix
index fefeaf7ebb55a..9798d94900b0f 100644
--- a/pkgs/development/python-modules/pyscard/default.nix
+++ b/pkgs/development/python-modules/pyscard/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchPypi, fetchpatch, buildPythonPackage, swig, pcsclite, PCSC }:
+{ stdenv, fetchPypi, buildPythonPackage, swig, pcsclite, PCSC }:
 
 let
   # Package does not support configuring the pcsc library.
@@ -30,21 +30,6 @@ buildPythonPackage rec {
   NIX_CFLAGS_COMPILE = optionalString (! withApplePCSC)
     "-I ${getDev pcsclite}/include/PCSC";
 
-  # The error message differs depending on the macOS host version.
-  # Since Nix reports a constant host version, but proxies to the
-  # underlying library, it's not possible to determine the correct
-  # expected error message.  This patch allows both errors to be
-  # accepted.
-  # See: https://github.com/LudovicRousseau/pyscard/issues/77
-  # Building with python from nix on macOS version 10.13 or
-  # greater still causes this issue to occur.
-  patches = optionals withApplePCSC [
-    (fetchpatch {
-      url = "https://github.com/LudovicRousseau/pyscard/commit/945e9c4cd4036155691f6ce9706a84283206f2ef.patch";
-      sha256 = "19n8w1wzn85zywr6xf04d8nfg7sgzjyvxp1ccp3rgfr4mcc36plc";
-    })
-  ];
-
   propagatedBuildInputs = if withApplePCSC then [ PCSC ] else [ pcsclite ];
   nativeBuildInputs = [ swig ];
 
diff --git a/pkgs/development/python-modules/pytorch/default.nix b/pkgs/development/python-modules/pytorch/default.nix
index fc18c6e516c11..ff3f3335c87c2 100644
--- a/pkgs/development/python-modules/pytorch/default.nix
+++ b/pkgs/development/python-modules/pytorch/default.nix
@@ -6,7 +6,7 @@
   cudaArchList ? null,
 
   # Native build inputs
-  cmake, utillinux, linkFarm, symlinkJoin, which,
+  cmake, util-linux, linkFarm, symlinkJoin, which,
 
   # Build inputs
   numactl,
@@ -207,7 +207,7 @@ in buildPythonPackage rec {
 
   nativeBuildInputs = [
     cmake
-    utillinux
+    util-linux
     which
     ninja
   ] ++ lib.optionals cudaSupport [ cudatoolkit_joined ];
diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix
index c0c0420e925a5..055341dfd1d3a 100644
--- a/pkgs/development/python-modules/rpy2/default.nix
+++ b/pkgs/development/python-modules/rpy2/default.nix
@@ -25,13 +25,13 @@
 }:
 
 buildPythonPackage rec {
-    version = "3.2.6";
+    version = "3.3.6";
     pname = "rpy2";
 
     disabled = isPyPy;
     src = fetchPypi {
       inherit version pname;
-      sha256 = "1p990cqx3p2pd1rc9wn66m56wahaq8dlr88frz49vb7nv4zw4a8q";
+      sha256 = "0xvfkxvh01r5ibd5mpisp8bz385hgpn27b988y8v65z7hqr3y1nf";
     };
 
     buildInputs = [
@@ -53,6 +53,7 @@ buildPythonPackage rec {
       DBI
       dbplyr
       hexbin
+      lazyeval
       lme4
       tidyr
     ]) ++ extraRPackages ++ rWrapper.recommendedPackages;
@@ -69,14 +70,6 @@ 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"
@@ -98,7 +91,7 @@ buildPythonPackage rec {
     ];
 
     meta = {
-      homepage = "http://rpy.sourceforge.net/rpy2";
+      homepage = "https://rpy2.github.io/";
       description = "Python interface to R";
       license = lib.licenses.gpl2Plus;
       platforms = lib.platforms.unix;
diff --git a/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch b/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch
index 177e4f9a83d13..a9e10f02b0bb2 100644
--- a/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch
+++ b/pkgs/development/python-modules/rpy2/rpy2-3.x-r-libs-site.patch
@@ -1,10 +1,10 @@
 diff --git a/rpy2/rinterface_lib/embedded.py b/rpy2/rinterface_lib/embedded.py
-index cc32b6d..3969ad0 100644
+index 1f4babbf..322363c5 100644
 --- a/rpy2/rinterface_lib/embedded.py
 +++ b/rpy2/rinterface_lib/embedded.py
-@@ -113,6 +113,16 @@ def _initr(interactive: bool = True,
-         if isinitialized():
-             return None
+@@ -118,6 +118,16 @@ def _initr(
+         if openrlib.R_HOME is None:
+             raise ValueError('openrlib.R_HOME cannot be None.')
          os.environ['R_HOME'] = openrlib.R_HOME
 +
 +        # path to libraries
diff --git a/pkgs/development/python-modules/scrapy/default.nix b/pkgs/development/python-modules/scrapy/default.nix
index a2db6b9cb3b28..c377ace69685d 100644
--- a/pkgs/development/python-modules/scrapy/default.nix
+++ b/pkgs/development/python-modules/scrapy/default.nix
@@ -27,7 +27,7 @@
 }:
 
 buildPythonPackage rec {
-  version = "2.4.0";
+  version = "2.4.1";
   pname = "Scrapy";
 
   disabled = isPy27;
@@ -83,7 +83,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "4ea7fbc902ee0b0a79b154d07a5f4e747e2146f272a748557941946000728479";
+    sha256 = "68c48f01a58636bdf0f6fcd5035a19ecf277b58af24bd70c36dc6e556df3e005";
   };
 
   postInstall = ''
diff --git a/pkgs/development/python-modules/shap/default.nix b/pkgs/development/python-modules/shap/default.nix
new file mode 100644
index 0000000000000..deb6dcf2a21a7
--- /dev/null
+++ b/pkgs/development/python-modules/shap/default.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, pytestCheckHook
+, numpy
+, scipy
+, scikitlearn
+, pandas
+, tqdm
+, slicer
+, numba
+, matplotlib
+, nose
+, ipython
+}:
+
+buildPythonPackage rec {
+  pname = "shap";
+  version = "0.36.0";
+  disabled = isPy27;
+
+  src = fetchFromGitHub {
+    owner = "slundberg";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1wxnxvbz6avzzfqjfbcqd4v879hvpq4021v31fhdpccr2q317rr9";
+  };
+
+  propagatedBuildInputs = [
+    numpy
+    scipy
+    scikitlearn
+    pandas
+    tqdm
+    slicer
+    numba
+  ];
+
+  preCheck = ''
+    export HOME=$TMPDIR
+    # when importing the local copy the extension is not found
+    rm -r shap
+  '';
+  checkInputs = [ pytestCheckHook matplotlib nose ipython ];
+  # Those tests access the network
+  disabledTests = [
+    "test_kernel_shap_with_a1a_sparse_zero_background"
+    "test_kernel_shap_with_a1a_sparse_nonzero_background"
+    "test_kernel_shap_with_high_dim_sparse"
+    "test_sklearn_random_forest_newsgroups"
+    "test_sum_match_random_forest"
+    "test_sum_match_extra_trees"
+    "test_single_row_random_forest"
+    "test_sum_match_gradient_boosting_classifier"
+    "test_single_row_gradient_boosting_classifier"
+    "test_HistGradientBoostingClassifier_proba"
+    "test_HistGradientBoostingClassifier_multidim"
+    "test_sum_match_gradient_boosting_regressor"
+    "test_single_row_gradient_boosting_regressor"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A unified approach to explain the output of any machine learning model";
+    homepage = "https://github.com/slundberg/shap";
+    license = licenses.mit;
+    maintainers = with maintainers; [ evax ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/python-modules/shapely/default.nix b/pkgs/development/python-modules/shapely/default.nix
index d4d52a9bf035c..eb3b5b9e44d14 100644
--- a/pkgs/development/python-modules/shapely/default.nix
+++ b/pkgs/development/python-modules/shapely/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, substituteAll
+{ stdenv, buildPythonPackage, fetchPypi, substituteAll, pythonOlder
 , geos, pytest, cython
 , numpy
 }:
@@ -11,6 +11,7 @@ buildPythonPackage rec {
     inherit pname version;
     sha256 = "0adiz4jwmwxk7k1awqifb1a9bj5x4nx4gglb5dz9liam21674h8n";
   };
+  disabled = pythonOlder "3.5";
 
   nativeBuildInputs = [
     geos # for geos-config
diff --git a/pkgs/development/python-modules/slicer/default.nix b/pkgs/development/python-modules/slicer/default.nix
new file mode 100644
index 0000000000000..827894771778f
--- /dev/null
+++ b/pkgs/development/python-modules/slicer/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, pytestCheckHook
+, pandas
+, pytorch
+}:
+
+buildPythonPackage rec {
+  pname = "slicer";
+  version = "0.0.4";
+  disabled = isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "21d53aac4e78c93fd83c0fd2f8f9d8a2195ac079dffdc0da81cd749da0f2f355";
+  };
+
+  checkInputs = [ pytestCheckHook pandas pytorch ];
+
+  meta = with stdenv.lib; {
+    description = "Wraps tensor-like objects and provides a uniform slicing interface via __getitem__";
+    homepage = "https://github.com/interpretml/slicer";
+    license = licenses.mit;
+    maintainers = with maintainers; [ evax ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/python-modules/smart_open/default.nix b/pkgs/development/python-modules/smart_open/default.nix
index d5177dfd2e97f..5486fb4195251 100644
--- a/pkgs/development/python-modules/smart_open/default.nix
+++ b/pkgs/development/python-modules/smart_open/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "smart_open";
-  version = "3.0.0";
+  version = "4.0.0";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7f4e85b71df5a3618f5447d0b417b7a3576308c839690a24a70338b8993684c3";
+    sha256 = "2ce157700821e285bbacd8d01ec7a4f2582765460e541f55b216cb135db8be24";
   };
 
   # nixpkgs version of moto is >=1.2.0, remove version pin to fix build
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 077aea4dc9a35..e14af1b21c834 100644
--- a/pkgs/development/python-modules/spacy/default.nix
+++ b/pkgs/development/python-modules/spacy/default.nix
@@ -22,11 +22,11 @@
 
 buildPythonPackage rec {
   pname = "spacy";
-  version = "2.3.2";
+  version = "2.3.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07zf7kivj4r1n6xwisld7n90bpi095bqbc9xpv668grq1rpf53c1";
+    sha256 = "799fa5fc172ff0a5bc8eb5dfcd1db200747c114320d2dc40060594a71efa3e53";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/supervise_api/default.nix b/pkgs/development/python-modules/supervise_api/default.nix
index 687aec08a0172..6b10e838e5fbf 100644
--- a/pkgs/development/python-modules/supervise_api/default.nix
+++ b/pkgs/development/python-modules/supervise_api/default.nix
@@ -5,7 +5,7 @@
 , supervise
 , isPy3k
 , whichcraft
-, utillinux
+, util-linux
 }:
 
 buildPythonPackage rec {
@@ -29,7 +29,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = lib.optional (!isPy3k) whichcraft;
 
-  checkInputs = [ utillinux ];
+  checkInputs = [ util-linux ];
 
   meta = {
     description = "An API for running processes safely and securely";
diff --git a/pkgs/development/python-modules/symengine/default.nix b/pkgs/development/python-modules/symengine/default.nix
index 9b1117a94a177..f225dd431e585 100644
--- a/pkgs/development/python-modules/symengine/default.nix
+++ b/pkgs/development/python-modules/symengine/default.nix
@@ -11,13 +11,13 @@
 
 buildPythonPackage rec {
   pname = "symengine";
-  version = "0.4.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "symengine";
     repo = "symengine.py";
     rev = "v${version}";
-    sha256 = "07i9rwxphi4zgwc7y6f6qvq73iym2cx4k1bpd7rmd3wkpgrrfxqx";
+    sha256 = "13fy25qxn4xwzlr2w35v6jhlpd70lv9r6srv4dizc4brj63hnw50";
   };
 
   postConfigure = ''
@@ -28,7 +28,9 @@ buildPythonPackage rec {
       --replace "SET(CYTHON_BIN cython" "SET(CYTHON_BIN ${cython}/bin/cython"
   '';
 
-  buildInputs = [ cython cmake ];
+  nativeBuildUnputs = [ cmake ];
+
+  buildInputs = [ cython ];
 
   checkInputs = [ pytest sympy ];
 
@@ -48,6 +50,5 @@ buildPythonPackage rec {
     homepage = "https://github.com/symengine/symengine.py";
     license = licenses.mit;
     maintainers = [ maintainers.costrouc ];
-    broken = true;
   };
 }
diff --git a/pkgs/development/python-modules/tag-expressions/default.nix b/pkgs/development/python-modules/tag-expressions/default.nix
index 7082ca54154b5..137759f5a54b0 100644
--- a/pkgs/development/python-modules/tag-expressions/default.nix
+++ b/pkgs/development/python-modules/tag-expressions/default.nix
@@ -17,7 +17,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Package to parse logical tag expressions";
-    homepage = "http://github.com/timofurrer/tag-expressions";
+    homepage = "https://github.com/timofurrer/tag-expressions";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ kalbasit ];
   };
diff --git a/pkgs/development/python-modules/thinc/default.nix b/pkgs/development/python-modules/thinc/default.nix
index 5ac55f5f57dd1..6e0fbcce37a6e 100644
--- a/pkgs/development/python-modules/thinc/default.nix
+++ b/pkgs/development/python-modules/thinc/default.nix
@@ -23,11 +23,11 @@
 
 buildPythonPackage rec {
   pname = "thinc";
-  version = "7.4.2";
+  version = "7.4.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "772f1a27b9b31e51003d1d2a7476cc49cc81044dd87088112237f93bd2091f0b";
+    sha256 = "c98491b083165f48bda95f5533f7d9dbd3980d32ad621bfe579ff08ef625a4d3";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
diff --git a/pkgs/development/python-modules/timeout-decorator/default.nix b/pkgs/development/python-modules/timeout-decorator/default.nix
index bf37e671cd138..d3b4a58c17e32 100644
--- a/pkgs/development/python-modules/timeout-decorator/default.nix
+++ b/pkgs/development/python-modules/timeout-decorator/default.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPythonPackage, fetchPypi }:
 buildPythonPackage rec {
   pname = "timeout-decorator";
-  version = "0.4.1";
+  version = "0.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1inkf68i2s2x27arpqwkdxigiqbpbpjbbnfv7jzsrif1fmp2fphs";
+    sha256 = "6a2f2f58db1c5b24a2cc79de6345760377ad8bdc13813f5265f6c3e63d16b3d7";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/tmdb3/default.nix b/pkgs/development/python-modules/tmdb3/default.nix
index 47247c6911d60..36a88ea22e49d 100644
--- a/pkgs/development/python-modules/tmdb3/default.nix
+++ b/pkgs/development/python-modules/tmdb3/default.nix
@@ -1,8 +1,9 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib, buildPythonPackage, fetchPypi, isPy3k }:
 
 buildPythonPackage rec {
   pname = "tmdb3";
   version = "0.7.2";
+  disabled = isPy3k; # Upstream has not received any updates since 2015, and importing from python3 does not work.
 
   src = fetchPypi {
     inherit pname version;
@@ -12,6 +13,8 @@ buildPythonPackage rec {
   # no tests implemented
   doCheck = false;
 
+  pythonImportsCheck = [ "tmdb3" ];
+
   meta = with lib; {
     description = "Python implementation of the v3 API for TheMovieDB.org, allowing access to movie and cast information";
     homepage = "https://pypi.python.org/pypi/tmdb3";
diff --git a/pkgs/development/python-modules/tracing/default.nix b/pkgs/development/python-modules/tracing/default.nix
index 2d91ae6a13784..6f9091d8517f4 100644
--- a/pkgs/development/python-modules/tracing/default.nix
+++ b/pkgs/development/python-modules/tracing/default.nix
@@ -19,7 +19,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with stdenv.lib; {
-    homepage = "http://liw.fi/tracing/";
+    homepage = "https://liw.fi/tracing/";
     description = "Python debug logging helper";
     license = licenses.gpl3;
     maintainers = [];
diff --git a/pkgs/development/python-modules/trimesh/default.nix b/pkgs/development/python-modules/trimesh/default.nix
index f5d6efff5e4a6..2829c4e1901dd 100644
--- a/pkgs/development/python-modules/trimesh/default.nix
+++ b/pkgs/development/python-modules/trimesh/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "trimesh";
-  version = "3.8.13";
+  version = "3.8.14";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b31dfd9d8cba0271a5a447250bc07cdb5c3b1fd21b76b88a63dcd4bcdcb80769";
+    sha256 = "dba3d9fa1d9488053fc7504c141fbb2258cf5f37377a3824b20bd0a93f7240a0";
   };
 
   propagatedBuildInputs = [ numpy ];
diff --git a/pkgs/development/python-modules/ttystatus/default.nix b/pkgs/development/python-modules/ttystatus/default.nix
index 8cf8c426b3b9c..a76a5f8df383b 100644
--- a/pkgs/development/python-modules/ttystatus/default.nix
+++ b/pkgs/development/python-modules/ttystatus/default.nix
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   doCheck = false;
 
   meta = with stdenv.lib; {
-    homepage = "http://liw.fi/ttystatus/";
+    homepage = "https://liw.fi/ttystatus/";
     description = "Progress and status updates on terminals for Python";
     license = licenses.gpl3;
     maintainers = [];
diff --git a/pkgs/development/python-modules/xlib/default.nix b/pkgs/development/python-modules/xlib/default.nix
index 3d82b599dc067..599abf1974cde 100644
--- a/pkgs/development/python-modules/xlib/default.nix
+++ b/pkgs/development/python-modules/xlib/default.nix
@@ -7,7 +7,7 @@
 , python
 , mock
 , nose
-, utillinux
+, util-linux
 }:
 
 buildPythonPackage rec {
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     ${python.interpreter} runtests.py
   '';
 
-  checkInputs = [ mock nose utillinux /* mcookie */ xorg.xauth xorg.xorgserver /* xvfb */ ];
+  checkInputs = [ mock nose util-linux /* mcookie */ xorg.xauth xorg.xorgserver /* xvfb */ ];
   nativeBuildInputs = [ setuptools_scm ];
   buildInputs = [ xorg.libX11 ];
   propagatedBuildInputs = [ six ];
diff --git a/pkgs/development/python-modules/xmljson/default.nix b/pkgs/development/python-modules/xmljson/default.nix
new file mode 100644
index 0000000000000..dd5d84afacb4e
--- /dev/null
+++ b/pkgs/development/python-modules/xmljson/default.nix
@@ -0,0 +1,26 @@
+{ buildPythonPackage
+, fetchPypi
+, lib
+, lxml
+}:
+
+buildPythonPackage rec {
+  pname = "xmljson";
+  version = "0.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "b4158e66aa1e62ee39f7f80eb2fe4f767670ba3c0d5de9804420dc53427fdec8";
+  };
+
+  checkInputs = [
+    lxml
+  ];
+
+  meta = with lib; {
+    description = "Converts XML into dictionary structures and vice-versa";
+    homepage = "https://github.com/sanand0/xmljson";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ rakesh4g ];
+  };
+}
diff --git a/pkgs/development/python-modules/xstatic-jquery/default.nix b/pkgs/development/python-modules/xstatic-jquery/default.nix
index 3cfbf3eb93267..e2a8f8266111c 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.4.1.0";
+  version = "3.5.1.1";
 
   src = fetchPypi {
     inherit version pname;
-    sha256 = "0y2rhbasr7vdjbgi6x67cx97hwdnmv6m5difqqq59yb5n9zark1z";
+    sha256 = "e0ae8f8ec5bbd28045ba4bca06767a38bd5fc27cf9b71f434589f59370dcd323";
   };
 
   # no tests implemented
diff --git a/pkgs/development/python-modules/zigpy-xbee/default.nix b/pkgs/development/python-modules/zigpy-xbee/default.nix
index 697ae5bb92d39..1279bb804de69 100644
--- a/pkgs/development/python-modules/zigpy-xbee/default.nix
+++ b/pkgs/development/python-modules/zigpy-xbee/default.nix
@@ -38,7 +38,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A library which communicates with XBee radios for zigpy";
-    homepage = "http://github.com/zigpy/zigpy-xbee";
+    homepage = "https://github.com/zigpy/zigpy-xbee";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ etu mvnetbiz ];
     platforms = platforms.linux;
diff --git a/pkgs/development/python-modules/zigpy-zigate/default.nix b/pkgs/development/python-modules/zigpy-zigate/default.nix
index e07451c26334e..018017c89a4c2 100644
--- a/pkgs/development/python-modules/zigpy-zigate/default.nix
+++ b/pkgs/development/python-modules/zigpy-zigate/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "zigpy-zigate";
-  version = "0.7.2";
+  version = "0.7.3";
   # https://github.com/Martiusweb/asynctest/issues/152
   # broken by upstream python bug with asynctest and
   # is used exclusively by home-assistant with python 3.8
@@ -21,11 +21,11 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "zigpy";
     repo = "zigpy-zigate";
-    rev = "v${version}";
-    sha256 = "0ycrsmp3n3awiyj0gbq6xnaa2s9mpc5l7mlmfc00rfnx7rr2z4ha";
+    rev = version;
+    sha256 = "068v8n8yimmpnwqcdz5m9g35z1x0dir478cbc1s1nyhw1xn50vg1";
   };
 
-  buildInputs = [
+  propagatedBuildInputs = [
     pyserial
     pyserial-asyncio
     pyusb
diff --git a/pkgs/development/python-modules/zope_interface/default.nix b/pkgs/development/python-modules/zope_interface/default.nix
index acef337e782e0..1d86d6a8f14e1 100644
--- a/pkgs/development/python-modules/zope_interface/default.nix
+++ b/pkgs/development/python-modules/zope_interface/default.nix
@@ -19,7 +19,7 @@ buildPythonPackage rec {
 
   meta = with stdenv.lib; {
     description = "Zope.Interface";
-    homepage = "http://zope.org/Products/ZopeInterface";
+    homepage = "https://zope.org/Products/ZopeInterface";
     license = licenses.zpl20;
     maintainers = [ maintainers.goibhniu ];
   };