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/aioh2/default.nix23
-rw-r--r--pkgs/development/python-modules/aiohttp-remotes/default.nix34
-rw-r--r--pkgs/development/python-modules/aiohttp/default.nix4
-rw-r--r--pkgs/development/python-modules/aioprocessing/default.nix26
-rw-r--r--pkgs/development/python-modules/aniso8601/default.nix4
-rw-r--r--pkgs/development/python-modules/async_timeout/default.nix4
-rw-r--r--pkgs/development/python-modules/atomman/default.nix40
-rw-r--r--pkgs/development/python-modules/awkward/default.nix24
-rw-r--r--pkgs/development/python-modules/beancount/default.nix12
-rw-r--r--pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch106
-rw-r--r--pkgs/development/python-modules/bitarray/default.nix21
-rw-r--r--pkgs/development/python-modules/bokeh/default.nix5
-rw-r--r--pkgs/development/python-modules/cassandra-driver/default.nix4
-rw-r--r--pkgs/development/python-modules/coilmq/default.nix4
-rw-r--r--pkgs/development/python-modules/colander/default.nix8
-rw-r--r--pkgs/development/python-modules/datadog/default.nix14
-rw-r--r--pkgs/development/python-modules/datamodeldict/default.nix27
-rw-r--r--pkgs/development/python-modules/dj-email-url/default.nix29
-rw-r--r--pkgs/development/python-modules/dj-search-url/default.nix23
-rw-r--r--pkgs/development/python-modules/django-cache-url/default.nix31
-rw-r--r--pkgs/development/python-modules/django-configurations/default.nix41
-rw-r--r--pkgs/development/python-modules/django-discover-runner/default.nix27
-rw-r--r--pkgs/development/python-modules/django-extensions/default.nix4
-rw-r--r--pkgs/development/python-modules/django-picklefield/default.nix4
-rw-r--r--pkgs/development/python-modules/django_classytags/default.nix8
-rw-r--r--pkgs/development/python-modules/djangorestframework/default.nix4
-rw-r--r--pkgs/development/python-modules/dlib/default.nix13
-rw-r--r--pkgs/development/python-modules/flask-babel/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-migrate/default.nix4
-rw-r--r--pkgs/development/python-modules/foolscap/default.nix4
-rw-r--r--pkgs/development/python-modules/ftfy/default.nix4
-rw-r--r--pkgs/development/python-modules/gevent-websocket/default.nix4
-rw-r--r--pkgs/development/python-modules/gipc/default.nix4
-rw-r--r--pkgs/development/python-modules/google_api_core/default.nix4
-rw-r--r--pkgs/development/python-modules/gplaycli/default.nix8
-rw-r--r--pkgs/development/python-modules/grip/default.nix4
-rw-r--r--pkgs/development/python-modules/i3ipc/default.nix4
-rw-r--r--pkgs/development/python-modules/icalendar/default.nix4
-rw-r--r--pkgs/development/python-modules/ifaddr/default.nix36
-rw-r--r--pkgs/development/python-modules/libagent/default.nix4
-rw-r--r--pkgs/development/python-modules/mail-parser/default.nix4
-rw-r--r--pkgs/development/python-modules/memory_profiler/default.nix24
-rw-r--r--pkgs/development/python-modules/mysql-connector/default.nix4
-rw-r--r--pkgs/development/python-modules/nameparser/default.nix8
-rw-r--r--pkgs/development/python-modules/nbxmpp/default.nix4
-rw-r--r--pkgs/development/python-modules/netdisco/default.nix14
-rw-r--r--pkgs/development/python-modules/nose2/default.nix11
-rw-r--r--pkgs/development/python-modules/ntfy/default.nix16
-rw-r--r--pkgs/development/python-modules/numericalunits/default.nix24
-rw-r--r--pkgs/development/python-modules/phonenumbers/default.nix4
-rw-r--r--pkgs/development/python-modules/pip-tools/default.nix4
-rw-r--r--pkgs/development/python-modules/praw/default.nix4
-rw-r--r--pkgs/development/python-modules/priority/default.nix23
-rw-r--r--pkgs/development/python-modules/pycares/default.nix4
-rw-r--r--pkgs/development/python-modules/pycontracts/default.nix8
-rw-r--r--pkgs/development/python-modules/pympler/default.nix12
-rw-r--r--pkgs/development/python-modules/pyramid_multiauth/default.nix4
-rw-r--r--pkgs/development/python-modules/pyro/default.nix22
-rw-r--r--pkgs/development/python-modules/pyro4/default.nix46
-rw-r--r--pkgs/development/python-modules/pyslurm/default.nix6
-rw-r--r--pkgs/development/python-modules/pytest-django/default.nix25
-rw-r--r--pkgs/development/python-modules/python-packer/default.nix8
-rw-r--r--pkgs/development/python-modules/python-rapidjson/default.nix37
-rw-r--r--pkgs/development/python-modules/python-telegram-bot/default.nix20
-rw-r--r--pkgs/development/python-modules/pyzmq/default.nix4
-rw-r--r--pkgs/development/python-modules/requests_download/default.nix8
-rw-r--r--pkgs/development/python-modules/rpmfluff/default.nix16
-rw-r--r--pkgs/development/python-modules/salmon-mail/default.nix4
-rw-r--r--pkgs/development/python-modules/selectors34/default.nix32
-rw-r--r--pkgs/development/python-modules/selenium/default.nix7
-rw-r--r--pkgs/development/python-modules/serpent/default.nix34
-rw-r--r--pkgs/development/python-modules/sh/default.nix24
-rw-r--r--pkgs/development/python-modules/spark_parser/default.nix27
-rw-r--r--pkgs/development/python-modules/structlog/default.nix20
-rw-r--r--pkgs/development/python-modules/sympy/default.nix4
-rw-r--r--pkgs/development/python-modules/trio/default.nix10
-rw-r--r--pkgs/development/python-modules/trueskill/default.nix28
-rw-r--r--pkgs/development/python-modules/twine/default.nix7
-rw-r--r--pkgs/development/python-modules/uncompyle6/default.nix15
-rw-r--r--pkgs/development/python-modules/uproot-methods/default.nix25
-rw-r--r--pkgs/development/python-modules/uproot/default.nix25
-rw-r--r--pkgs/development/python-modules/whichcraft/default.nix9
-rw-r--r--pkgs/development/python-modules/xdis/default.nix13
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix26
-rw-r--r--pkgs/development/python-modules/zstd/default.nix49
85 files changed, 1130 insertions, 225 deletions
diff --git a/pkgs/development/python-modules/aioh2/default.nix b/pkgs/development/python-modules/aioh2/default.nix
new file mode 100644
index 000000000000..fdeb5fb0082e
--- /dev/null
+++ b/pkgs/development/python-modules/aioh2/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, isPy3k, fetchPypi, h2, priority }:
+
+buildPythonPackage rec {
+  pname = "aioh2";
+  version = "0.2.2";
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "03i24wzpw0mrnrpck3w6qy83iigwl7n99sdrndqzxfyrc69b99wd";
+  };
+
+  propagatedBuildInputs = [ h2 priority ];
+
+  doCheck = false; # https://github.com/decentfox/aioh2/issues/17
+
+  meta = with lib; {
+    homepage = https://github.com/decentfox/aioh2;
+    description = "HTTP/2 implementation with hyper-h2 on Python 3 asyncio";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.qyliss ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp-remotes/default.nix b/pkgs/development/python-modules/aiohttp-remotes/default.nix
new file mode 100644
index 000000000000..51120d07121c
--- /dev/null
+++ b/pkgs/development/python-modules/aiohttp-remotes/default.nix
@@ -0,0 +1,34 @@
+{ lib, fetchpatch, buildPythonPackage, fetchPypi
+, aiohttp, pytest, pytestcov, pytest-aiohttp
+}:
+
+buildPythonPackage rec {
+  pname = "aiohttp_remotes";
+  version = "0.1.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "43c3f7e1c5ba27f29fb4dbde5d43b900b5b5fc7e37bf7e35e6eaedabaec4a3fc";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = https://github.com/aio-libs/aiohttp-remotes/commit/188772abcea038c31dae7d607e487eeed44391bc.patch;
+      sha256 = "0pb1y4jb8ar1szhnjiyj2sdmdk6z9h6c3wrxw59nv9kr3if5igvs";
+    })
+  ];
+
+  propagatedBuildInputs = [ aiohttp ];
+
+  checkInputs = [ pytest pytestcov pytest-aiohttp ];
+  checkPhase = ''
+    python -m pytest
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/wikibusiness/aiohttp-remotes;
+    description = "A set of useful tools for aiohttp.web server";
+    license = licenses.mit;
+    maintainers = [ maintainers.qyliss ];
+  };
+}
diff --git a/pkgs/development/python-modules/aiohttp/default.nix b/pkgs/development/python-modules/aiohttp/default.nix
index ec76d840a56b..14fca8dfe82f 100644
--- a/pkgs/development/python-modules/aiohttp/default.nix
+++ b/pkgs/development/python-modules/aiohttp/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonPackage rec {
   pname = "aiohttp";
-  version = "3.3.2";
+  version = "3.4.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f20deec7a3fbaec7b5eb7ad99878427ad2ee4cc16a46732b705e8121cbb3cc12";
+    sha256 = "1ykm6kdjkrg556j0zd7dx2l1rsrbh0d9g27ivr6dmaahz9pyrbsi";
   };
 
   disabled = pythonOlder "3.5";
diff --git a/pkgs/development/python-modules/aioprocessing/default.nix b/pkgs/development/python-modules/aioprocessing/default.nix
new file mode 100644
index 000000000000..f2f959112688
--- /dev/null
+++ b/pkgs/development/python-modules/aioprocessing/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+  pname = "aioprocessing";
+  version = "1.0.1";
+  disabled = !(pythonAtLeast "3.4");
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1yq1gfsky2kjimwdmzqk893sp6387vbl4bw0sbha5hl6cm3jp5dn";
+  };
+
+  # Tests aren't included in pypi package
+  doCheck = false;
+
+  meta = {
+    description = "A library that integrates the multiprocessing module with asyncio";
+    homepage = https://github.com/dano/aioprocessing;
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ uskudnik ];
+  };
+}
diff --git a/pkgs/development/python-modules/aniso8601/default.nix b/pkgs/development/python-modules/aniso8601/default.nix
index b8ee673e66bb..163e2c9b2099 100644
--- a/pkgs/development/python-modules/aniso8601/default.nix
+++ b/pkgs/development/python-modules/aniso8601/default.nix
@@ -3,7 +3,7 @@
 
 buildPythonPackage rec {
   pname = "aniso8601";
-  version = "3.0.2";
+  version = "4.0.1";
 
   meta = with stdenv.lib; {
     description = "Parses ISO 8601 strings.";
@@ -15,6 +15,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7849749cf00ae0680ad2bdfe4419c7a662bef19c03691a19e008c8b9a5267802";
+    sha256 = "15cwnadw2xdczdi13k9grrgqq67hxgys4l155dqsl2zh3glhsmp7";
   };
 }
diff --git a/pkgs/development/python-modules/async_timeout/default.nix b/pkgs/development/python-modules/async_timeout/default.nix
index ee15be954186..aabf30183d56 100644
--- a/pkgs/development/python-modules/async_timeout/default.nix
+++ b/pkgs/development/python-modules/async_timeout/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "async-timeout";
-  version = "3.0.0";
+  version = "3.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b3c0ddc416736619bd4a95ca31de8da6920c3b9a140c64dbef2b2fa7bf521287";
+    sha256 = "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f";
   };
 
   # Circular dependency on aiohttp
diff --git a/pkgs/development/python-modules/atomman/default.nix b/pkgs/development/python-modules/atomman/default.nix
new file mode 100644
index 000000000000..ce4408b84412
--- /dev/null
+++ b/pkgs/development/python-modules/atomman/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xmltodict
+, datamodeldict
+, numpy
+, matplotlib
+, scipy
+, pandas
+, cython
+, numericalunits
+, pytest
+}:
+
+buildPythonPackage rec {
+  version = "1.2.3";
+  pname = "atomman";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9eb6acc5497263cfa89be8d0f383a9a69f0726b4ac6798c1b1d96f26705ec09c";
+  };
+
+  checkInputs = [ pytest ];
+  propagatedBuildInputs = [ xmltodict datamodeldict numpy matplotlib scipy pandas cython numericalunits ];
+
+  # tests not included with Pypi release
+  doCheck = false;
+
+  checkPhase = ''
+    py.test tests
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/usnistgov/atomman/;
+    description = "Atomistic Manipulation Toolkit";
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/awkward/default.nix b/pkgs/development/python-modules/awkward/default.nix
new file mode 100644
index 000000000000..6bbcd1703822
--- /dev/null
+++ b/pkgs/development/python-modules/awkward/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+}:
+
+buildPythonPackage rec {
+  version = "0.3.0";
+  pname = "awkward";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "fc3080c66987f2a03aa9ba0809e51227eb7aa34198da4b1ee4deb95356409693";
+  };
+
+  propagatedBuildInputs = [ numpy ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/scikit-hep/awkward-array;
+    description = "Manipulate jagged, chunky, and/or bitmasked arrays as easily as Numpy";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/beancount/default.nix b/pkgs/development/python-modules/beancount/default.nix
index 1a005d9e42d7..e023c721b0e6 100644
--- a/pkgs/development/python-modules/beancount/default.nix
+++ b/pkgs/development/python-modules/beancount/default.nix
@@ -1,7 +1,7 @@
 { stdenv, buildPythonPackage, fetchPypi, isPy3k
 , beautifulsoup4, bottle, chardet, dateutil
 , google_api_python_client, lxml, ply, python_magic
-, nose, requests }:
+, pytest, requests }:
 
 buildPythonPackage rec {
   version = "2.1.3";
@@ -14,13 +14,8 @@ buildPythonPackage rec {
     sha256 = "4b7b0d3633c82ca88d3cb3d31ad2fd2e45a42401cfa94eaa1cb938ffece34f22";
   };
 
-  checkInputs = [ nose ];
-
-  # Automatic tests cannot be run because it needs to import some local modules for tests.
+  # No tests in archive
   doCheck = false;
-  checkPhase = ''
-    nosetests
-  '';
 
   propagatedBuildInputs = [
     beautifulsoup4
@@ -32,6 +27,9 @@ buildPythonPackage rec {
     ply
     python_magic
     requests
+    # pytest really is a runtime dependency
+    # https://bitbucket.org/blais/beancount/commits/554e13057551951e113835196770847c788dd592
+    pytest
   ];
 
   meta = {
diff --git a/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch b/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch
new file mode 100644
index 000000000000..e1019115ac74
--- /dev/null
+++ b/pkgs/development/python-modules/bitarray/0001-Buffer-Protocol-Py3.patch
@@ -0,0 +1,106 @@
+From c636f0cc386c9ded9f31947bbd74affccc93c21a Mon Sep 17 00:00:00 2001
+From: yoch <yoch.melka@gmail.com>
+Date: Mon, 14 May 2018 21:55:00 +0300
+Subject: [PATCH] Adding buffer protocol support for Python 3
+
+---
+ bitarray/_bitarray.c      | 12 ++++++++++--
+ bitarray/test_bitarray.py | 14 +++++++-------
+ 2 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/bitarray/_bitarray.c b/bitarray/_bitarray.c
+index d2c19cb..be6b379 100644
+--- a/bitarray/_bitarray.c
++++ b/bitarray/_bitarray.c
+@@ -48,7 +48,7 @@ int PyIndex_Check(PyObject *o)
+ #define Py_SIZE(ob)   (((PyVarObject *) (ob))->ob_size)
+ #endif
+ 
+-#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION == 7
++#if PY_MAJOR_VERSION == 3 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION == 7)
+ /* (new) buffer protocol */
+ #define WITH_BUFFER
+ #endif
+@@ -2787,6 +2787,8 @@ static PyTypeObject BitarrayIter_Type = {
+ 
+ /********************* Bitarray Buffer Interface ************************/
+ #ifdef WITH_BUFFER
++
++#if PY_MAJOR_VERSION == 2
+ static Py_ssize_t
+ bitarray_buffer_getreadbuf(bitarrayobject *self,
+                            Py_ssize_t index, const void **ptr)
+@@ -2831,6 +2833,8 @@ bitarray_buffer_getcharbuf(bitarrayobject *self,
+     return Py_SIZE(self);
+ }
+ 
++#endif
++
+ static int
+ bitarray_getbuffer(bitarrayobject *self, Py_buffer *view, int flags)
+ {
+@@ -2857,14 +2861,18 @@ bitarray_releasebuffer(bitarrayobject *self, Py_buffer *view)
+ }
+ 
+ static PyBufferProcs bitarray_as_buffer = {
++#if PY_MAJOR_VERSION == 2   // old buffer protocol
+     (readbufferproc) bitarray_buffer_getreadbuf,
+     (writebufferproc) bitarray_buffer_getwritebuf,
+     (segcountproc) bitarray_buffer_getsegcount,
+     (charbufferproc) bitarray_buffer_getcharbuf,
++#endif
+     (getbufferproc) bitarray_getbuffer,
+     (releasebufferproc) bitarray_releasebuffer,
+ };
++
+ #endif  /* WITH_BUFFER */
++
+ /************************** Bitarray Type *******************************/
+ 
+ static PyTypeObject Bitarraytype = {
+@@ -2898,7 +2906,7 @@ static PyTypeObject Bitarraytype = {
+     0,                                        /* tp_as_buffer */
+ #endif
+     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS
+-#ifdef WITH_BUFFER
++#if defined(WITH_BUFFER) && PY_MAJOR_VERSION == 2
+     | Py_TPFLAGS_HAVE_NEWBUFFER
+ #endif
+     ,                                         /* tp_flags */
+diff --git a/bitarray/test_bitarray.py b/bitarray/test_bitarray.py
+index 44de2f0..b72b554 100644
+--- a/bitarray/test_bitarray.py
++++ b/bitarray/test_bitarray.py
+@@ -2113,10 +2113,10 @@ def test_read1(self):
+         a = bitarray('01000001' '01000010' '01000011', endian='big')
+         v = memoryview(a)
+         self.assertEqual(len(v), 3)
+-        self.assertEqual(v[0], 'A')
+-        self.assertEqual(v[:].tobytes(), 'ABC')
++        #self.assertEqual(v[0], 'A')
++        self.assertEqual(v[:].tobytes(), b'ABC')
+         a[13] = 1
+-        self.assertEqual(v[:].tobytes(), 'AFC')
++        self.assertEqual(v[:].tobytes(), b'AFC')
+ 
+     def test_read2(self):
+         a = bitarray([randint(0, 1) for d in range(8000)])
+@@ -2131,14 +2131,14 @@ def test_write(self):
+         a.setall(0)
+         v = memoryview(a)
+         self.assertFalse(v.readonly)
+-        v[50000] = '\xff'
++        v[50000] = 255 if is_py3k else '\xff'
+         self.assertEqual(a[399999:400009], bitarray('0111111110'))
+         a[400003] = 0
+         self.assertEqual(a[399999:400009], bitarray('0111011110'))
+-        v[30001:30004] = 'ABC'
+-        self.assertEqual(a[240000:240040].tobytes(), '\x00ABC\x00')
++        v[30001:30004] = b'ABC'
++        self.assertEqual(a[240000:240040].tobytes(), b'\x00ABC\x00')
+ 
+-if sys.version_info[:2] == (2, 7):
++if sys.version_info[:2] >= (2, 7):
+     tests.append(BufferInterfaceTests)
+ 
+ # ---------------------------------------------------------------------------
diff --git a/pkgs/development/python-modules/bitarray/default.nix b/pkgs/development/python-modules/bitarray/default.nix
new file mode 100644
index 000000000000..c413303dd21d
--- /dev/null
+++ b/pkgs/development/python-modules/bitarray/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPythonPackage, fetchPypi }:
+
+buildPythonPackage rec {
+  version = "0.8.3";
+  pname = "bitarray";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0pl9p4j3dhlyffsqra6h28q7jph6v3hgppg786lkmnqdh45x6305";
+  };
+
+  # Delete once https://github.com/ilanschnell/bitarray/pull/55 is merged
+  patches = [ ./0001-Buffer-Protocol-Py3.patch ];
+
+  meta = with lib; {
+    description = "Efficient arrays of booleans";
+    homepage = https://github.com/ilanschnell/bitarray;
+    license = licenses.psfl;
+    maintainers = [ maintainers.bhipple ];
+  };
+}
diff --git a/pkgs/development/python-modules/bokeh/default.nix b/pkgs/development/python-modules/bokeh/default.nix
index 4855a07a479b..567ea4518f88 100644
--- a/pkgs/development/python-modules/bokeh/default.nix
+++ b/pkgs/development/python-modules/bokeh/default.nix
@@ -33,11 +33,11 @@
 
 buildPythonPackage rec {
   pname = "bokeh";
-  version = "0.13.0";
+  version = "1.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "d0cf59774d7c74b7173b82ce36bde35b8fe9da0f960364ba3c4df0d1fbd874d6";
+    sha256 = "1h1g3jw53srcvbgl1jb9p2rfi7kjz6c91hbqxfbr3s2wx1f67ahn";
   };
 
   disabled = isPyPy;
@@ -48,6 +48,7 @@ buildPythonPackage rec {
   checkInputs = [ mock pytest pillow selenium ];
 
   propagatedBuildInputs = [
+    pillow
     flask
     jinja2
     markupsafe
diff --git a/pkgs/development/python-modules/cassandra-driver/default.nix b/pkgs/development/python-modules/cassandra-driver/default.nix
index 110cd1e0bd5b..c445c21478b0 100644
--- a/pkgs/development/python-modules/cassandra-driver/default.nix
+++ b/pkgs/development/python-modules/cassandra-driver/default.nix
@@ -20,11 +20,11 @@
 
 buildPythonPackage rec {
   pname = "cassandra-driver";
-  version = "3.6.0";
+  version = "3.15.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1aqmy3psn12lxgp659d0zsxkirxzy5lnbnzxf9xjq1a93s3qm704";
+    sha256 = "1xcirbvlj00id8269akhk8gy2sv0mlnbgy3nagi32648jwsrcadg";
   };
 
   buildInputs = [ pkgs.libev cython ];
diff --git a/pkgs/development/python-modules/coilmq/default.nix b/pkgs/development/python-modules/coilmq/default.nix
index 11d39e411ce5..90eb1edc2cda 100644
--- a/pkgs/development/python-modules/coilmq/default.nix
+++ b/pkgs/development/python-modules/coilmq/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi
-, stompclient, pythondaemon, redis, pid, pytest, six, click, coverage
+, stompclient, python-daemon, redis, pid, pytest, six, click, coverage
 , sqlalchemy }:
 
 buildPythonPackage rec {
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     sha256 = "4cbfeb5ed2459df14902c1380157be6267702b1271682924cd316ccad8a29d1d";
   };
 
-  propagatedBuildInputs = [ stompclient pythondaemon redis pid ];
+  propagatedBuildInputs = [ stompclient python-daemon redis pid ];
   buildInputs = [ pytest six click coverage sqlalchemy ];
 
   # The teste data is not included in the distribution
diff --git a/pkgs/development/python-modules/colander/default.nix b/pkgs/development/python-modules/colander/default.nix
index ed27464d1fe0..5cfa1862f48b 100644
--- a/pkgs/development/python-modules/colander/default.nix
+++ b/pkgs/development/python-modules/colander/default.nix
@@ -1,16 +1,16 @@
 { lib, buildPythonPackage, fetchPypi
-, translationstring, iso8601 }:
+, translationstring, iso8601, enum34 }:
 
 buildPythonPackage rec {
   pname = "colander";
-  version = "1.4";
+  version = "1.5.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "e20e9acf190e5711cf96aa65a5405dac04b6e841028fc361d953a9923dbc4e72";
+    sha256 = "18ah4cwwxnpm6qxi6x9ipy51dal4spd343h44s5wd01cnhgrwsyq";
   };
 
-  propagatedBuildInputs = [ translationstring iso8601 ];
+  propagatedBuildInputs = [ translationstring iso8601 enum34 ];
 
   meta = with lib; {
     description = "A simple schema-based serialization and deserialization library";
diff --git a/pkgs/development/python-modules/datadog/default.nix b/pkgs/development/python-modules/datadog/default.nix
index 47c206fda5e8..7b15d412610a 100644
--- a/pkgs/development/python-modules/datadog/default.nix
+++ b/pkgs/development/python-modules/datadog/default.nix
@@ -1,18 +1,14 @@
-{ lib, buildPythonPackage, fetchFromGitHub
+{ lib, buildPythonPackage, fetchPypi
 , decorator, requests, simplejson
 , nose, mock }:
 
 buildPythonPackage rec {
   pname = "datadog";
-  version = "0.20.0";
+  version = "0.23.0";
 
-  # no tests in PyPI tarball
-  # https://github.com/DataDog/datadogpy/pull/259
-  src = fetchFromGitHub {
-    owner = "DataDog";
-    repo = "datadogpy";
-    rev = "v${version}";
-    sha256 = "1p4p14853yrsl8py4ca7za7a12qzw0xwgz64f5kzx8a6vpv3p3md";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6ed9aec2b3a26722b74465c2ed36d2efdb9c9fac1a07a84d81fa2fc0cfa66ae4";
   };
 
   propagatedBuildInputs = [ decorator requests simplejson ];
diff --git a/pkgs/development/python-modules/datamodeldict/default.nix b/pkgs/development/python-modules/datamodeldict/default.nix
new file mode 100644
index 000000000000..9aac803ccae1
--- /dev/null
+++ b/pkgs/development/python-modules/datamodeldict/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  version = "0.9.4";
+  pname = "DataModelDict";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "97d8e999e000cf69c48e57b1a72eb45a27d83576a38c6cd8550c230b018be7af";
+  };
+
+  propagatedBuildInputs = [ xmltodict ];
+
+  # no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/usnistgov/DataModelDict/;
+    description = "Class allowing for data models equivalently represented as Python dictionaries, JSON, and XML";
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/dj-email-url/default.nix b/pkgs/development/python-modules/dj-email-url/default.nix
new file mode 100644
index 000000000000..c9e56017447e
--- /dev/null
+++ b/pkgs/development/python-modules/dj-email-url/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+  version = "0.1.0";
+  pname = "dj-email-url";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "84f32673156f58d740a14cab09f04ca92a65b2c8881b60e31e09e67d7853e544";
+  };
+
+  checkPhase = ''
+    ${python.interpreter} test_dj_email_url.py
+  '';
+
+  # tests not included with pypi release
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/migonzalvar/dj-email-url;
+    description = "Use an URL to configure email backend settings in your Django Application";
+    license = licenses.bsd0;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/dj-search-url/default.nix b/pkgs/development/python-modules/dj-search-url/default.nix
new file mode 100644
index 000000000000..b66f6b8f73a3
--- /dev/null
+++ b/pkgs/development/python-modules/dj-search-url/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+  version = "0.1";
+  pname = "dj-search-url";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "424d1a5852500b3c118abfdd0e30b3e0016fe68e7ed27b8553a67afa20d4fb40";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/dstufft/dj-search-url;
+    description = "Use Search URLs in your Django Haystack Application";
+    license = licenses.bsd0;
+    maintainers = [ maintainers.costrouc ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/django-cache-url/default.nix b/pkgs/development/python-modules/django-cache-url/default.nix
new file mode 100644
index 000000000000..4cff6f2a69b0
--- /dev/null
+++ b/pkgs/development/python-modules/django-cache-url/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+  version = "3.0.0";
+  pname = "django-cache-url";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "235950e2d7cb16164082167c2974301e2f0fb2313d40bfacc9d24f5b09c3514b";
+  };
+
+  checkInputs = [ pytest ];
+
+  checkPhase = ''
+    pytest tests
+  '';
+
+  # tests not included with pypi release
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/ghickman/django-cache-url;
+    description = "Use Cache URLs in your Django application";
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-configurations/default.nix b/pkgs/development/python-modules/django-configurations/default.nix
new file mode 100644
index 000000000000..0ca6c400df28
--- /dev/null
+++ b/pkgs/development/python-modules/django-configurations/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django-discover-runner
+, mock
+, dj-database-url
+, dj-email-url
+, dj-search-url
+, django-cache-url
+, six
+, django
+}:
+
+buildPythonPackage rec {
+  version = "2.1";
+  pname = "django-configurations";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "71d9acdff33aa034f0157b0b3d23629fe0cd499bf4d0b6d699b9ca0701d952e8";
+  };
+
+  checkInputs = [ django-discover-runner mock dj-database-url dj-email-url dj-search-url django-cache-url six ];
+
+  checkPhase = ''
+    export PYTHONPATH=.:$PYTHONPATH
+    export DJANGO_SETTINGS_MODULE="tests.settings.main"
+    export DJANGO_CONFIGURATION="Test"
+    ${django}/bin/django-admin.py test
+  '';
+
+  # django.core.exceptions.ImproperlyConfigured: django-configurations settings importer wasn't correctly installed
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://django-configurations.readthedocs.io/;
+    description = "A helper for organizing Django settings";
+    license = licenses.bsd0;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-discover-runner/default.nix b/pkgs/development/python-modules/django-discover-runner/default.nix
new file mode 100644
index 000000000000..d25d9e79947b
--- /dev/null
+++ b/pkgs/development/python-modules/django-discover-runner/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, django
+}:
+
+buildPythonPackage rec {
+  version = "1.0";
+  pname = "django-discover-runner";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0ba91fe722c256bcbfdeb36fac7eac0f27e5bfda55d98c4c1cf9ab62b5b084fe";
+  };
+
+  propagatedBuildInputs = [ django ];
+
+  # tests not included with release
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/jezdez/django-discover-runner;
+    description = "A Django test runner based on unittest2's test discovery";
+    license = licenses.bsd0;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/django-extensions/default.nix b/pkgs/development/python-modules/django-extensions/default.nix
index 3548e930ab3d..30ef1a104188 100644
--- a/pkgs/development/python-modules/django-extensions/default.nix
+++ b/pkgs/development/python-modules/django-extensions/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "django-extensions";
-  version = "2.0.7";
+  version = "2.1.3";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "1xf84wq7ab1zfb3nmf4qgw6mjf5xafjwr3175dyrqrrn6cpvcr4a";
+    sha256 = "0ns1m9sdkcbbz84wvzgxa4f8hf4a8z656jzwx4bw8np9kh96zfjy";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/django-picklefield/default.nix b/pkgs/development/python-modules/django-picklefield/default.nix
index 7037f23b071c..694b11c6ca87 100644
--- a/pkgs/development/python-modules/django-picklefield/default.nix
+++ b/pkgs/development/python-modules/django-picklefield/default.nix
@@ -2,7 +2,7 @@
 
 buildPythonPackage rec {
   pname = "django-picklefield";
-  version = "1.0.0";
+  version = "1.1.0";
 
   meta = {
     description = "A pickled object field for Django";
@@ -12,6 +12,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "61e3ba7f6df82d8df9e6be3a8c55ef589eb3bf926c3d25d2b7949b07eae78354";
+    sha256 = "174zlsajpjflrf3jgn0wp5svnxfyrjadk4s9jb45vzjqcmffwzyf";
   };
 }
diff --git a/pkgs/development/python-modules/django_classytags/default.nix b/pkgs/development/python-modules/django_classytags/default.nix
index 022709bacbe0..d3ed0fd18410 100644
--- a/pkgs/development/python-modules/django_classytags/default.nix
+++ b/pkgs/development/python-modules/django_classytags/default.nix
@@ -6,17 +6,17 @@
 
 buildPythonPackage rec {
   pname = "django-classy-tags";
-  version = "0.6.1";
+  version = "0.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0wxvpmjdzk0aajk33y4himn3wqjx7k0aqlka9j8ay3yfav78bdq0";
+    sha256 = "1f2dc9rq8v9sc4kv4x9hmbzp5c4amdxjkz5nzas5abg2s1hr2bvr";
   };
 
   propagatedBuildInputs = [ django ];
 
-  # tests appear to be broken on 0.6.1 at least
-  doCheck = ( version != "0.6.1" );
+  # pypi version doesn't include runtest.py, needed to run tests
+  doCheck = false;
 
   meta = with stdenv.lib; {
     description = "Class based template tags for Django";
diff --git a/pkgs/development/python-modules/djangorestframework/default.nix b/pkgs/development/python-modules/djangorestframework/default.nix
index 18372fc113aa..d75fc90eda77 100644
--- a/pkgs/development/python-modules/djangorestframework/default.nix
+++ b/pkgs/development/python-modules/djangorestframework/default.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPythonPackage, fetchPypi, django }:
 buildPythonPackage rec {
-  version = "3.8.2";
+  version = "3.9.0";
   pname = "djangorestframework";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b6714c3e4b0f8d524f193c91ecf5f5450092c2145439ac2769711f7eba89a9d9";
+    sha256 = "0dk1r2qiifws4bb2pq8xk5dbsrhli0fi14iqg59v360mpfq6ay30";
   };
 
   # Test settings are missing
diff --git a/pkgs/development/python-modules/dlib/default.nix b/pkgs/development/python-modules/dlib/default.nix
new file mode 100644
index 000000000000..90e2c526789f
--- /dev/null
+++ b/pkgs/development/python-modules/dlib/default.nix
@@ -0,0 +1,13 @@
+{ buildPythonPackage, dlib, python, pytest }:
+
+buildPythonPackage {
+  inherit (dlib) name src nativeBuildInputs buildInputs meta;
+
+  checkPhase = ''
+    ${python.interpreter} nix_run_setup test --no USE_AVX_INSTRUCTIONS
+  '';
+
+  patches = [ ./build-cores.patch ];
+
+  checkInputs = [ pytest ];
+}
diff --git a/pkgs/development/python-modules/flask-babel/default.nix b/pkgs/development/python-modules/flask-babel/default.nix
index 1f4f914968f6..caaf0a61152b 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.11.2";
+  version = "0.12.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0ff9n165vhf1nhv6807ckhpp224jw7k7sd7jz5kfh3sbpl85gmy0";
+    sha256 = "11jwp8vvq1gnm31qh6ihy2h393hy18yn9yjp569g60r0wj1x2sii";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/flask-migrate/default.nix b/pkgs/development/python-modules/flask-migrate/default.nix
index 89cbdf0fbf82..1f9177832c35 100644
--- a/pkgs/development/python-modules/flask-migrate/default.nix
+++ b/pkgs/development/python-modules/flask-migrate/default.nix
@@ -4,11 +4,11 @@ with stdenv.lib;
 
 buildPythonPackage rec {
   pname = "Flask-Migrate";
-  version = "2.2.1";
+  version = "2.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "cd1b4e6cb829eeb41c02ad9202d83bef5f4b7a036dd9fad72ce96ad1e22efb07";
+    sha256 = "19rxhva9i5n643vm3d11f8p98jwai2pavysa217p5w5h5cnksnx2";
   };
 
   checkInputs = optional isPy3k glibcLocales;
diff --git a/pkgs/development/python-modules/foolscap/default.nix b/pkgs/development/python-modules/foolscap/default.nix
index 94b90a25d137..8680ff2d2aad 100644
--- a/pkgs/development/python-modules/foolscap/default.nix
+++ b/pkgs/development/python-modules/foolscap/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "foolscap";
-  version = "0.12.6";
+  version = "0.13.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1bpmqq6485mmr5jza9q2c55l9m1bfsvsbd9drsip7p5qcsi22jrz";
+    sha256 = "0sqxp4fshnpcv69c2j04v8c22pjak28iwscxv998h2s3054knxz2";
   };
 
   propagatedBuildInputs = [ mock twisted pyopenssl service-identity ];
diff --git a/pkgs/development/python-modules/ftfy/default.nix b/pkgs/development/python-modules/ftfy/default.nix
index d2e806e43b90..ce847b81de63 100644
--- a/pkgs/development/python-modules/ftfy/default.nix
+++ b/pkgs/development/python-modules/ftfy/default.nix
@@ -9,7 +9,7 @@
 buildPythonPackage rec {
   pname = "ftfy";
 
-  version = "4.4.3";
+  version = "5.3.0";
   # ftfy v5 only supports python3. Since at the moment the only
   # packages that use ftfy are spacy and textacy which both support
   # python 2 and 3, they have pinned ftfy to the v4 branch.
@@ -18,7 +18,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "152xdb56rhs1q4r0ck1n557sbphw7zq18r75a7kkd159ckdnc01w";
+    sha256 = "0zybd0ypxhb83bgdbwzi120n02328v4j0ndm6bgkb6wg2gah59qb";
   };
 
   propagatedBuildInputs = [ html5lib wcwidth ];
diff --git a/pkgs/development/python-modules/gevent-websocket/default.nix b/pkgs/development/python-modules/gevent-websocket/default.nix
index 28dab3a257f0..78986ec7d306 100644
--- a/pkgs/development/python-modules/gevent-websocket/default.nix
+++ b/pkgs/development/python-modules/gevent-websocket/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "gevent-websocket";
-  version = "0.9.3";
+  version = "0.10.1";
   # SyntaxError in tests.
   disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "07rqwfpbv13mk6gg8mf0bmvcf6siyffjpgai1xd8ky7r801j4xb4";
+    sha256 = "1c2zv2rahp1gil3cj66hfsqgy0n35hz9fny3ywhr2319d0lz7bky";
   };
 
   propagatedBuildInputs = [ gevent ];
diff --git a/pkgs/development/python-modules/gipc/default.nix b/pkgs/development/python-modules/gipc/default.nix
index 9780b46fa5a0..4b174468a7ab 100644
--- a/pkgs/development/python-modules/gipc/default.nix
+++ b/pkgs/development/python-modules/gipc/default.nix
@@ -7,13 +7,13 @@
 
 buildPythonPackage rec {
   pname = "gipc";
-  version = "0.5.0";
+  version = "0.6.0";
   disabled = isPy3k;
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "08c35xzv7nr12d9xwlywlbyzzz2igy0yy6y52q2nrkmh5d4slbpc";
+    sha256 = "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2";
   };
 
   propagatedBuildInputs = [ gevent ];
diff --git a/pkgs/development/python-modules/google_api_core/default.nix b/pkgs/development/python-modules/google_api_core/default.nix
index ded728bdc0d6..899a315da653 100644
--- a/pkgs/development/python-modules/google_api_core/default.nix
+++ b/pkgs/development/python-modules/google_api_core/default.nix
@@ -3,11 +3,11 @@
 
 buildPythonPackage rec {
   pname = "google-api-core";
-  version = "1.3.0";
+  version = "1.5.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ac85fc7f6687bb0271f2f70ca298da90f35789f9de1fe3a11e8caeb571332b77";
+    sha256 = "16ximavy7zgg0427790fmyma03xnkywar9krp4lx6bcphvyiahh3";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/gplaycli/default.nix b/pkgs/development/python-modules/gplaycli/default.nix
index 0a8826934089..0c7fa8db01c5 100644
--- a/pkgs/development/python-modules/gplaycli/default.nix
+++ b/pkgs/development/python-modules/gplaycli/default.nix
@@ -4,18 +4,18 @@
 
 buildPythonPackage rec {
   pname = "gplaycli";
-  version = "3.21";
+  version = "3.25";
 
   src = fetchFromGitHub {
     owner = "matlink";
     repo = "gplaycli";
     rev = version;
-    sha256 = "1r5nzi9yzswam0866gypjcvv3f1rw13jwx9s49chp8byxy1dyrs2";
+    sha256 = "1rygx5cg4b1vwpkiaq6jcpbc1ly7cspslv3sy7x8n8ba61ryq6h4";
   };
 
- disabled = !isPy3k;
+  disabled = !isPy3k;
 
- propagatedBuildInputs = [ libffi pyasn1 clint ndg-httpsclient protobuf requests args gpapi pyaxmlparser ];
+  propagatedBuildInputs = [ libffi pyasn1 clint ndg-httpsclient protobuf requests args gpapi pyaxmlparser ];
 
   meta = with stdenv.lib; {
     homepage = https://github.com/matlink/gplaycli;
diff --git a/pkgs/development/python-modules/grip/default.nix b/pkgs/development/python-modules/grip/default.nix
index c11bcaa5baa5..d812d58b74ca 100644
--- a/pkgs/development/python-modules/grip/default.nix
+++ b/pkgs/development/python-modules/grip/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "grip";
-  version = "4.4.0";
+  version = "4.5.2";
 
   src = fetchFromGitHub {
     owner = "joeyespo";
     repo = "grip";
     rev = "v${version}";
-    sha256 = "1768n3w40qg1njkzqjyl5gkva0h31k8h250821v69imj1zimymag";
+    sha256 = "0hphplnyi903jx7ghfxplg1qlj2kpcav1frr2js7p45pbh5ib9rm";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/i3ipc/default.nix b/pkgs/development/python-modules/i3ipc/default.nix
index 492c4da6fcc9..cf206472cd3b 100644
--- a/pkgs/development/python-modules/i3ipc/default.nix
+++ b/pkgs/development/python-modules/i3ipc/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "i3ipc";
-  version = "1.4.0";
+  version = "1.5.1";
 
   src = fetchFromGitHub {
     owner  = "acrisci";
     repo   = "i3ipc-python";
     rev    = "v${version}";
-    sha256 = "15drq16ncmjrgsri6gjzp0qm8abycm92nicm78q3k7vy7rqpvfnh";
+    sha256 = "06d7g4d7cnh0vp5diavy3x9wz1w5nwdrb7ipc4g1c3a2wc78862d";
   };
 
   propagatedBuildInputs = [ enum-compat ];
diff --git a/pkgs/development/python-modules/icalendar/default.nix b/pkgs/development/python-modules/icalendar/default.nix
index b83785211f88..e2e833f7c476 100644
--- a/pkgs/development/python-modules/icalendar/default.nix
+++ b/pkgs/development/python-modules/icalendar/default.nix
@@ -7,12 +7,12 @@
 }:
 
 buildPythonPackage rec {
-  version = "3.9.0";
+  version = "4.0.3";
   pname = "icalendar";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "93d0b94eab23d08f62962542309916a9681f16de3d5eca1c75497f30f1b07792";
+    sha256 = "0mk3dk1dxkcm46jy48v27j2w2349iv4sbimqj1yb5js43mx49hh7";
   };
 
   buildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/ifaddr/default.nix b/pkgs/development/python-modules/ifaddr/default.nix
new file mode 100644
index 000000000000..db0b8301f008
--- /dev/null
+++ b/pkgs/development/python-modules/ifaddr/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ipaddress
+, python
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  version = "0.1.4";
+  pname = "ifaddr";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "cf2a8fbb578da2844d999a0a453825f660ed2d3fc47dcffc5f673dd8de4f0f8b";
+  };
+
+  # ipaddress is provided in python stdlib > 3.3
+  postPatch = if pythonOlder "3.4" then "" else ''
+    sed -i "s/'ipaddress'//" setup.py
+  '';
+
+  propagatedBuildInputs = [ ipaddress ];
+
+  checkPhase = ''
+   ${python.interpreter} ifaddr/test_ifaddr.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/pydron/ifaddr;
+    description = "Enumerates all IP addresses on all network adapters of the system";
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/libagent/default.nix b/pkgs/development/python-modules/libagent/default.nix
index f70d538bb8d0..f93958860409 100644
--- a/pkgs/development/python-modules/libagent/default.nix
+++ b/pkgs/development/python-modules/libagent/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchPypi, buildPythonPackage, ed25519, ecdsa , semver, mnemonic,
   unidecode, mock, pytest , backports-shutil-which, ConfigArgParse,
-  pythondaemon, pymsgbox }:
+  python-daemon, pymsgbox }:
 
 buildPythonPackage rec {
   pname = "libagent";
@@ -12,7 +12,7 @@ buildPythonPackage rec {
   };
 
   propagatedBuildInputs = [ unidecode backports-shutil-which ConfigArgParse
-    pythondaemon pymsgbox ecdsa ed25519 mnemonic semver ];
+    python-daemon pymsgbox ecdsa ed25519 mnemonic semver ];
 
   checkInputs = [ mock pytest ];
 
diff --git a/pkgs/development/python-modules/mail-parser/default.nix b/pkgs/development/python-modules/mail-parser/default.nix
index e05dc3f2861f..da74830f8798 100644
--- a/pkgs/development/python-modules/mail-parser/default.nix
+++ b/pkgs/development/python-modules/mail-parser/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "mail-parser";
-  version = "3.3.1";
+  version = "3.4.1";
 
   # no tests in PyPI tarball
   src = fetchFromGitHub {
     owner = "SpamScope";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1b1v61zwgdx2xjzds3hp6bv53yq424hhlrhf445n4faj1l0c4lkg";
+    sha256 = "0nxilshq4gwpicdklja9p275yf8l5kr1lk620c3cx9w4qai4cmbv";
   };
 
   LC_ALL = "en_US.utf-8";
diff --git a/pkgs/development/python-modules/memory_profiler/default.nix b/pkgs/development/python-modules/memory_profiler/default.nix
index 5f40ce0f1aad..cf976f06ff08 100644
--- a/pkgs/development/python-modules/memory_profiler/default.nix
+++ b/pkgs/development/python-modules/memory_profiler/default.nix
@@ -1,24 +1,28 @@
 { stdenv
-, buildPythonPackage
-, fetchPypi
+, python
 }:
 
-buildPythonPackage rec {
+python.pkgs.buildPythonPackage rec {
   pname = "memory_profiler";
-  version = "0.41";
+  version = "0.54.0";
 
-  src = fetchPypi {
+  src = python.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "dce6e931c281662a500b142595517d095267216472c2926e5ec8edab89898d10";
+    sha256 = "06ld8h8mhm8pk0sv7fxgx0y2q8nri65qlh4vjbs0bq9j7yi44hyn";
   };
 
-  # Tests don't import profile
-  doCheck = false;
+  propagatedBuildInputs = with python.pkgs; [
+    psutil # needed to profile child processes
+    matplotlib # needed for plotting memory usage
+  ];
 
   meta = with stdenv.lib; {
-    description = "A module for monitoring memory usage of a python program";
+    description = "A module for monitoring memory usage of a process";
+    longDescription = ''
+      This is a python module for monitoring memory consumption of a process as
+      well as line-by-line analysis of memory consumption for python programs.
+    '';
     homepage = https://pypi.python.org/pypi/memory_profiler;
     license = licenses.bsd3;
   };
-
 }
diff --git a/pkgs/development/python-modules/mysql-connector/default.nix b/pkgs/development/python-modules/mysql-connector/default.nix
index 4af0c6487b3f..579fc4631f66 100644
--- a/pkgs/development/python-modules/mysql-connector/default.nix
+++ b/pkgs/development/python-modules/mysql-connector/default.nix
@@ -4,13 +4,13 @@
 
 buildPythonPackage rec {
   pname = "mysql-connector";
-  version = "8.0.12";
+  version = "8.0.13";
 
   src = fetchFromGitHub {
     owner = "mysql";
     repo = "mysql-connector-python";
     rev = version;
-    sha256 = "1i3148dka4zfqzz4n4n5k0qaqbc585bdpmjwgx5vp6iiv7pgvrxp";
+    sha256 = "1qb6m3cp6zxmr49bp6g5g5b75yszgac1h26i2hza61mrvd235688";
   };
 
   propagatedBuildInputs = [ protobuf ];
diff --git a/pkgs/development/python-modules/nameparser/default.nix b/pkgs/development/python-modules/nameparser/default.nix
index a3e67fa7b985..b5150382b362 100644
--- a/pkgs/development/python-modules/nameparser/default.nix
+++ b/pkgs/development/python-modules/nameparser/default.nix
@@ -1,17 +1,21 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
+, glibcLocales
 }:
 
 buildPythonPackage rec {
   pname = "nameparser";
-  version = "0.3.4";
+  version = "1.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1zi94m99ziwwd6kkip3w2xpnl05r2cfv9iq68inz7np81c3g8vag";
+    sha256 = "c7eeeffbf16e263452b17b5f4b544d366c3364e966721f39d490e6c7c8b44b7f";
   };
 
+  LC_ALL="en_US.UTF-8";
+  buildInputs = [ glibcLocales ];
+
   meta = with stdenv.lib; {
     description = "A simple Python module for parsing human names into their individual components";
     homepage = https://github.com/derek73/python-nameparser;
diff --git a/pkgs/development/python-modules/nbxmpp/default.nix b/pkgs/development/python-modules/nbxmpp/default.nix
index 696796740f8b..888e1de6aa57 100644
--- a/pkgs/development/python-modules/nbxmpp/default.nix
+++ b/pkgs/development/python-modules/nbxmpp/default.nix
@@ -2,7 +2,7 @@
 
 let
   pname = "nbxmpp";
-  version = "0.6.6";
+  version = "0.6.8";
   name = "${pname}-${version}";
 in buildPythonPackage rec {
   inherit pname version;
@@ -11,7 +11,7 @@ in buildPythonPackage rec {
     name = "${name}.tar.bz2";
     url = "https://dev.gajim.org/gajim/python-nbxmpp/repository/archive.tar.bz2?"
         + "ref=${name}";
-    sha256 = "10n7z613p00q15dplsvdrz11s9yq26jy2qack6nd8k7fivfhlcmz";
+    sha256 = "09zrqz01j45kvayfscd66avkrnn237lbjg9li5hjhyw92h6hkkc4";
   };
 
   propagatedBuildInputs = [ pyopenssl ];
diff --git a/pkgs/development/python-modules/netdisco/default.nix b/pkgs/development/python-modules/netdisco/default.nix
index 1e404370284c..036d6f9dea7c 100644
--- a/pkgs/development/python-modules/netdisco/default.nix
+++ b/pkgs/development/python-modules/netdisco/default.nix
@@ -1,17 +1,14 @@
-{ stdenv, buildPythonPackage, isPy3k, fetchFromGitHub, requests, zeroconf, netifaces, pytest }:
+{ stdenv, buildPythonPackage, isPy3k, fetchPypi, requests, zeroconf, netifaces, pytest }:
 
 buildPythonPackage rec {
   pname = "netdisco";
-  version = "2.0.0";
+  version = "2.2.0";
 
   disabled = !isPy3k;
 
-  # PyPI is missing tests/ directory
-  src = fetchFromGitHub {
-    owner = "home-assistant";
-    repo = pname;
-    rev = version;
-    sha256 = "08x5ab7v6a20753y9br7pvfm6a054ywn7y7gh6fydqski0gad6l7";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "b5e810721a266660f7f90fc43f12c4635ec95c3db87d9e30ca408bb922cb1007";
   };
 
   propagatedBuildInputs = [ requests zeroconf netifaces ];
@@ -26,7 +23,6 @@ buildPythonPackage rec {
     description = "Python library to scan local network for services and devices";
     homepage = https://github.com/home-assistant/netdisco;
     license = licenses.asl20;
-    platforms = platforms.unix;
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/development/python-modules/nose2/default.nix b/pkgs/development/python-modules/nose2/default.nix
index 9d5c1675359e..e708ff2ee3e7 100644
--- a/pkgs/development/python-modules/nose2/default.nix
+++ b/pkgs/development/python-modules/nose2/default.nix
@@ -2,18 +2,23 @@
 , buildPythonPackage
 , fetchPypi
 , six
+, pythonOlder
+, mock
+, coverage
 }:
 
 buildPythonPackage rec {
   pname = "nose2";
-  version = "0.5.0";
+  version = "0.8.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0595rh6b6dncbj0jigsyrgrh6h8fsl6w1fr69h76mxv9nllv0rlr";
+    sha256 = "9052f2b46807b63d9bdf68e0768da1f8386368889b50043fd5d0889c470258f3";
   };
 
-  propagatedBuildInputs = [ six ];
+  propagatedBuildInputs = [ six coverage ]
+    ++ stdenv.lib.optionals (pythonOlder "3.4") [ mock ];
+
   # AttributeError: 'module' object has no attribute 'collector'
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/ntfy/default.nix b/pkgs/development/python-modules/ntfy/default.nix
index 5d54b0928b6f..efbd1eec35a3 100644
--- a/pkgs/development/python-modules/ntfy/default.nix
+++ b/pkgs/development/python-modules/ntfy/default.nix
@@ -2,26 +2,32 @@
 , buildPythonPackage
 , fetchFromGitHub
 , appdirs
-, pyyaml
+, ruamel_yaml
 , requests
-, dbus-python
 , emoji
 , sleekxmpp
 , mock
+, psutil
+, python
+# , dbus-python
 }:
 
 buildPythonPackage rec {
-  version = "1.2.0";
+  version = "2.6.0";
   pname = "ntfy";
 
   src = fetchFromGitHub {
     owner = "dschep";
     repo = "ntfy";
     rev = "v${version}";
-    sha256 = "0yjxwisxpxy3vpnqk9nw5k3db3xx6wyf6sk1px9m94s30glcq2cc";
+    sha256 = "0hnwrybbk0gw0c6kw2zpx0x1rh3jb9qyrprcphzkv0jlhzdfkrp1";
   };
 
-  propagatedBuildInputs = [ appdirs pyyaml requests dbus-python emoji sleekxmpp mock ];
+  propagatedBuildInputs = [ requests ruamel_yaml appdirs mock sleekxmpp emoji psutil ];
+
+  checkPhase = ''
+    HOME=$(mktemp -d) ${python.interpreter} setup.py test
+  '';
 
   meta = with stdenv.lib; {
     description = "A utility for sending notifications, on demand and when commands finish";
diff --git a/pkgs/development/python-modules/numericalunits/default.nix b/pkgs/development/python-modules/numericalunits/default.nix
new file mode 100644
index 000000000000..1212bf0039c9
--- /dev/null
+++ b/pkgs/development/python-modules/numericalunits/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  version = "1.16";
+  pname = "numericalunits";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "71ae8e236c7a223bccefffb670dca68be476dd63b7b9009641fc64099455da25";
+  };
+
+  # no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://pypi.python.org/pypi/numericalunits;
+    description = "A package that lets you define quantities with unit";
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/phonenumbers/default.nix b/pkgs/development/python-modules/phonenumbers/default.nix
index 01c387928f59..915c48f069a6 100644
--- a/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/pkgs/development/python-modules/phonenumbers/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.9.15";
+  version = "8.9.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8e9664ce0a838c81f4fb3e4d271c76859d26bde57242d64fe1632ab636f5319f";
+    sha256 = "1camfcbvbl0xljxmd4h8smcfg3ris19jjznjv5zcbrxr28fafq74";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/pip-tools/default.nix b/pkgs/development/python-modules/pip-tools/default.nix
index 89b0d56a4016..de35a06d6d47 100644
--- a/pkgs/development/python-modules/pip-tools/default.nix
+++ b/pkgs/development/python-modules/pip-tools/default.nix
@@ -3,12 +3,12 @@
 
 buildPythonPackage rec {
   pname = "pip-tools";
-  version = "2.0.2";
+  version = "3.1.0";
   name = pname + "-" + version;
 
   src = fetchurl {
     url = "mirror://pypi/p/pip-tools/${name}.tar.gz";
-    sha256 = "f11fc3bf1d87a0b4a68d4d595f619814e2396e92d75d7bdd2500edbf002ea6de";
+    sha256 = "0w1qdkr5n612nb3b890mbdyjb3cxn2mna1c7ysr4d0x4nh1wmkmi";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/pkgs/development/python-modules/praw/default.nix b/pkgs/development/python-modules/praw/default.nix
index 8f43cbfb4a8c..f8f3d5458a08 100644
--- a/pkgs/development/python-modules/praw/default.nix
+++ b/pkgs/development/python-modules/praw/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "praw";
-  version = "5.4.0";
+  version = "6.0.0";
 
   src = fetchFromGitHub {
     owner = "praw-dev";
     repo = "praw";
     rev = "v${version}";
-    sha256 = "13vbh2r952ai2m6sc79psfwaj5fc8cssdg2pqpizg2mwd0l1s6lb";
+    sha256 = "0y6nyz8vf98gl1qfmnznv3dbvlbzdl6mz99vk673nyfn3hbs451i";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/priority/default.nix b/pkgs/development/python-modules/priority/default.nix
new file mode 100644
index 000000000000..90b58b665de8
--- /dev/null
+++ b/pkgs/development/python-modules/priority/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildPythonPackage, fetchPypi, pytest, hypothesis }:
+
+buildPythonPackage rec {
+  pname = "priority";
+  version = "1.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1gpzn9k9zgks0iw5wdmad9b4dry8haiz2sbp6gycpjkzdld9dhbb";
+  };
+
+  checkInputs = [ pytest hypothesis ];
+  checkPhase = ''
+    PYTHONPATH="src:$PYTHONPATH" pytest
+  '';
+
+  meta = with lib; {
+    homepage = https://python-hyper.org/priority/;
+    description = "A pure-Python implementation of the HTTP/2 priority tree";
+    license = licenses.mit;
+    maintainers = [ maintainers.qyliss ];
+  };
+}
diff --git a/pkgs/development/python-modules/pycares/default.nix b/pkgs/development/python-modules/pycares/default.nix
index bf863fae57b9..4755bf908fda 100644
--- a/pkgs/development/python-modules/pycares/default.nix
+++ b/pkgs/development/python-modules/pycares/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pycares";
-  version = "1.0.0";
+  version = "2.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "a18341ea030e2cc0743acdf4aa72302bdf6b820938b36ce4bd76e43faa2276a3";
+    sha256 = "0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n";
   };
 
   propagatedBuildInputs = [ pkgs.c-ares ];
diff --git a/pkgs/development/python-modules/pycontracts/default.nix b/pkgs/development/python-modules/pycontracts/default.nix
index 23633ce248db..cd9c054ddcaa 100644
--- a/pkgs/development/python-modules/pycontracts/default.nix
+++ b/pkgs/development/python-modules/pycontracts/default.nix
@@ -1,17 +1,17 @@
 { stdenv, buildPythonPackage, fetchPypi
-, nose, pyparsing, decorator, six }:
+, nose, pyparsing, decorator, six, future }:
 
 buildPythonPackage rec {
   pname = "PyContracts";
-  version = "1.8.3";
+  version = "1.8.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8e52c4ddbc015b56cc672b7c005c11f3df4fe407b832964099836fa3cccb8b9d";
+    sha256 = "8b6ad8750bbb712b1c7b8f89772b42baeefd35b3c7085233e8027b92f277e073";
   };
 
   buildInputs = [ nose ];
-  propagatedBuildInputs = [ pyparsing decorator six ];
+  propagatedBuildInputs = [ pyparsing decorator six future ];
 
   meta = with stdenv.lib; {
     description = "Allows to declare constraints on function parameters and return values";
diff --git a/pkgs/development/python-modules/pympler/default.nix b/pkgs/development/python-modules/pympler/default.nix
index 1a3eb0475105..a331f5e11755 100644
--- a/pkgs/development/python-modules/pympler/default.nix
+++ b/pkgs/development/python-modules/pympler/default.nix
@@ -5,19 +5,15 @@
 
 buildPythonPackage rec {
   pname = "Pympler";
-  version = "0.4.3";
+  version = "0.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0mhyxqlkha98y8mi5zqcjg23r30mgdjdzs05lghbmqfdyvzjh1a3";
+    sha256 = "c262ceca4dac67b8b523956833c52443420eabc3321a07185990b358b8ba13a7";
   };
 
- # Remove test asizeof.flatsize(), broken and can be missed as
- # test is only useful on python 2.5, see https://github.com/pympler/pympler/issues/22
- patchPhase = ''
-   substituteInPlace ./test/asizeof/test_asizeof.py --replace "n, e = test_flatsize" "#n, e = test_flatsize"
-   substituteInPlace ./test/asizeof/test_asizeof.py --replace "self.assert_(n," "#self.assert_(n,"
-   substituteInPlace ./test/asizeof/test_asizeof.py --replace "self.assert_(not e" "#self.assert_(not e"
+  postPatch = ''
+   rm test/asizeof/test_asizeof.py
   '';
 
   doCheck = stdenv.hostPlatform.isLinux;
diff --git a/pkgs/development/python-modules/pyramid_multiauth/default.nix b/pkgs/development/python-modules/pyramid_multiauth/default.nix
index 7130e8b499f3..7c01e3e093bd 100644
--- a/pkgs/development/python-modules/pyramid_multiauth/default.nix
+++ b/pkgs/development/python-modules/pyramid_multiauth/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "pyramid_multiauth";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lq292qakrm4ixi4vaif8dqywzj08pn6qy0wi4gw28blh39p0msk";
+    sha256 = "0lprqjyg3zcji6033p1l3s4nigjigc5423wgivkfhz46vq0jmniy";
   };
 
   propagatedBuildInputs = [ pyramid ];
diff --git a/pkgs/development/python-modules/pyro/default.nix b/pkgs/development/python-modules/pyro/default.nix
deleted file mode 100644
index 3a74a1fe6fa7..000000000000
--- a/pkgs/development/python-modules/pyro/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, fetchurl, buildPythonPackage, isPy3k }:
-
-buildPythonPackage rec {
-  pname = "Pyro";
-  version = "3.16";
-  name = pname + "-" + version;
-
-  disabled = isPy3k;
-
-  src = fetchurl {
-    url = "mirror://pypi/P/Pyro/${name}.tar.gz";
-    sha256 = "1bed508453ef7a7556b51424a58101af2349b662baab7e7331c5cb85dbe7e578";
-  };
-
-  meta = with stdenv.lib; {
-    description = "Distributed object middleware for Python (IPC/RPC)";
-    homepage = https://pythonhosted.org/Pyro/;
-    license = licenses.mit;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ bjornfor ];
-  };
-}
diff --git a/pkgs/development/python-modules/pyro4/default.nix b/pkgs/development/python-modules/pyro4/default.nix
new file mode 100644
index 000000000000..df8df2cb93ca
--- /dev/null
+++ b/pkgs/development/python-modules/pyro4/default.nix
@@ -0,0 +1,46 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lib
+, python
+, serpent
+, dill
+, cloudpickle
+, msgpack
+, isPy27
+, isPy33
+, selectors34
+}:
+
+buildPythonPackage rec {
+
+  name = "${pname}-${version}";
+  pname = "Pyro4";
+  version = "4.74";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "89ed7b12c162e5124f322f992f9506c44f5e1a379926cf01ee73ef810d3bf75f";
+  };
+
+  propagatedBuildInputs = [
+    serpent
+  ] ++ lib.optionals (isPy27 || isPy33) [ selectors34 ];
+
+  buildInputs = [
+    dill
+    cloudpickle
+    msgpack
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} setup.py test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Distributed object middleware for Python (RPC)";
+    homepage = https://github.com/irmen/Pyro4;
+    license = licenses.mit;
+    maintainers = with maintainers; [ prusnak ];
+    };
+}
diff --git a/pkgs/development/python-modules/pyslurm/default.nix b/pkgs/development/python-modules/pyslurm/default.nix
index f004ab1054dd..7d592c7b450b 100644
--- a/pkgs/development/python-modules/pyslurm/default.nix
+++ b/pkgs/development/python-modules/pyslurm/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pyslurm";
-  version = "20180908";
+  version = "18-08-3";
 
   src = fetchFromGitHub {
     repo = "pyslurm";
     owner = "PySlurm";
-    rev = "50dc113e99d82e70e84fc2e812333733708be4ed";
-    sha256 = "1j2i4rvhmk2ihhcvsjdlqlxqb5a05jg8k9bqkv3zrvdj71yn4z9k";
+    rev = version;
+    sha256 = "1rymx106xa99wd4n44s7jw0w41spg39y1ji4fgn01yk7wjfrdrwg";
   };
 
   buildInputs = [ cython slurm ];
diff --git a/pkgs/development/python-modules/pytest-django/default.nix b/pkgs/development/python-modules/pytest-django/default.nix
index db17d60b6280..481e4154ddb3 100644
--- a/pkgs/development/python-modules/pytest-django/default.nix
+++ b/pkgs/development/python-modules/pytest-django/default.nix
@@ -1,27 +1,26 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, pytest, django, setuptools_scm
-, fetchpatch
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, django
+, setuptools_scm
+, django-configurations
+, pytest_xdist
+, six
 }:
 buildPythonPackage rec {
   pname = "pytest-django";
-  version = "3.1.2";
+  version = "3.4.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "02932m2sr8x22m4az8syr8g835g4ak77varrnw71n6xakmdcr303";
+    sha256 = "b379282feaf89069cb790775ab6bbbd2bd2038a68c7ef9b84a41898e0b551081";
   };
 
   buildInputs = [ pytest setuptools_scm ];
+  checkInputs = [ django-configurations pytest_xdist six ];
   propagatedBuildInputs = [ django ];
 
-  patches = [
-    # Unpin setuptools-scm
-    (fetchpatch {
-      url = "https://github.com/pytest-dev/pytest-django/commit/25cbc3b395dcdeb92bdc9414e296680c2b9d602e.patch";
-      sha256 = "0mz3rcsv44pfzlxy3pv8mx87glmv34gy0d5aknvbzgb2a9niryws";
-    })
-  ];
-
   # Complicated. Requires Django setup.
   doCheck = false;
 
diff --git a/pkgs/development/python-modules/python-packer/default.nix b/pkgs/development/python-modules/python-packer/default.nix
index 3f0c1f8138f9..ff3d28b47466 100644
--- a/pkgs/development/python-modules/python-packer/default.nix
+++ b/pkgs/development/python-modules/python-packer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonPackage, fetchPypi, sh }:
+{ stdenv, buildPythonPackage, fetchPypi, fetchpatch, sh }:
 
 buildPythonPackage rec {
   pname = "python-packer";
@@ -9,6 +9,12 @@ buildPythonPackage rec {
     sha256 = "fd363dae9bd2efd447739bbf7a4f29c1e4741596ae7b02d252fe525b2b4176e7";
   };
 
+  patches = fetchpatch {
+    url = "${meta.homepage}/commit/de3421bf13bf7c3ec11fe0a381f0944e102b1d97.patch";
+    excludes = [ "dev-requirements.txt" ];
+    sha256 = "0rgmkyn7i6y1xs8m75dpl8hq7j2ns2s3dvp7kv9j4zwic93rrlsc";
+  };
+
   propagatedBuildInputs = [ sh ];
   
   # Tests requires network connections
diff --git a/pkgs/development/python-modules/python-rapidjson/default.nix b/pkgs/development/python-modules/python-rapidjson/default.nix
new file mode 100644
index 000000000000..d245d472a007
--- /dev/null
+++ b/pkgs/development/python-modules/python-rapidjson/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+, pytz
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+  version = "0.6.3";
+  pname = "python-rapidjson";
+  disabled = pythonOlder "3.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0a7729c711d9be2b6c0638ce4851d398e181f2329814668aa7fda6421a5da085";
+  };
+
+  LC_ALL="en_US.utf-8";
+  buildInputs = [ glibcLocales ];
+
+  # buildInputs = [ ];
+  checkInputs = [ pytest pytz ];
+  # propagatedBuildInputs = [ ];
+
+  checkPhase = ''
+    pytest tests
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/python-rapidjson/python-rapidjson;
+    description = "Python wrapper around rapidjson ";
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-telegram-bot/default.nix b/pkgs/development/python-modules/python-telegram-bot/default.nix
index 5bb20ae8e77c..5af4383d44b3 100644
--- a/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -1,12 +1,20 @@
-{ stdenv, fetchPypi, buildPythonPackage, certifi, future, urllib3 }:
+{ stdenv
+, fetchPypi
+, buildPythonPackage
+, certifi
+, future
+, urllib3
+, tornado
+, pytest
+}:
 
 buildPythonPackage rec {
   pname = "python-telegram-bot";
-  version = "10.1.0";
+  version = "11.1.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ca2f8a44ddef7271477e16f4986647fa90ef4df5b55a7953e53b9c9d2672f639";
+    sha256 = "cca4e32ebb8da7fdf35ab2fa2b3edd441211364819c5592fc253acdb7561ea5b";
   };
 
   prePatch = ''
@@ -16,10 +24,14 @@ buildPythonPackage rec {
       --replace "import telegram.vendor.ptb_urllib3.urllib3.contrib.appengine as appengine" "import urllib3.contrib.appengine as appengine" \
       --replace "from telegram.vendor.ptb_urllib3.urllib3.connection import HTTPConnection" "from urllib3.connection import HTTPConnection" \
       --replace "from telegram.vendor.ptb_urllib3.urllib3.util.timeout import Timeout" "from urllib3.util.timeout import Timeout"
+
+    touch LICENSE.dual
   '';
 
-  propagatedBuildInputs = [ certifi future urllib3 ];
+  checkInputs = [ pytest ];
+  propagatedBuildInputs = [ certifi future urllib3 tornado ];
 
+  # tests not included with release
   doCheck = false;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/pyzmq/default.nix b/pkgs/development/python-modules/pyzmq/default.nix
index 31b08d0a9e0b..71243ef6f76e 100644
--- a/pkgs/development/python-modules/pyzmq/default.nix
+++ b/pkgs/development/python-modules/pyzmq/default.nix
@@ -2,7 +2,7 @@
 , fetchPypi
 , pytest
 , tornado
-, zeromq3
+, zeromq
 , py
 , python
 }:
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   };
 
   checkInputs = [  pytest tornado ];
-  buildInputs = [ zeromq3];
+  buildInputs = [ zeromq ];
   propagatedBuildInputs = [ py ];
 
   # test_socket.py seems to be hanging
diff --git a/pkgs/development/python-modules/requests_download/default.nix b/pkgs/development/python-modules/requests_download/default.nix
index 6d1264dee67e..8062834e1803 100644
--- a/pkgs/development/python-modules/requests_download/default.nix
+++ b/pkgs/development/python-modules/requests_download/default.nix
@@ -6,18 +6,18 @@
 
 buildPythonPackage rec {
   pname = "requests_download";
-  version = "0.1.1";
+  version = "0.1.2";
 
   format = "wheel";
 
   #src = pkgs.fetchurl {
-  #  url = https://files.pythonhosted.org/packages/60/af/10f899f0574a81cbc511124c08d7c7dc46c20d4f956a6a3c793ad4330bb4/requests_download-0.1.1-py2.py3-none-any.whl;
-  #  sha256 = "07832a93314bcd619aaeb08611ae245728e66672efb930bc2a300a115a47dab7";
+  #  url = https://files.pythonhosted.org/packages/60/af/10f899f0574a81cbc511124c08d7c7dc46c20d4f956a6a3c793ad4330bb4/requests_download-0.1.2-py2.py3-none-any.whl;
+  #  sha256 = "1ballx1hljpdpyvqzqn79m0dc21z2smrnxk2ylb6dbpg5crrskcr";
   #};
 
   src = fetchPypi {
     inherit pname version format;
-    sha256 = "07832a93314bcd619aaeb08611ae245728e66672efb930bc2a300a115a47dab7";
+    sha256 = "1ballx1hljpdpyvqzqn79m0dc21z2smrnxk2ylb6dbpg5crrskcr";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/python-modules/rpmfluff/default.nix b/pkgs/development/python-modules/rpmfluff/default.nix
index c6cd2521292a..a8997e279b27 100644
--- a/pkgs/development/python-modules/rpmfluff/default.nix
+++ b/pkgs/development/python-modules/rpmfluff/default.nix
@@ -1,15 +1,21 @@
-{ stdenv, buildPythonPackage, fetchurl }:
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, glibcLocales
+}:
 
 buildPythonPackage rec {
   pname = "rpmfluff";
-  version = "0.5.3";
-  name  = "${pname}-${version}";
+  version = "0.5.5";
 
   src = fetchurl {
-    url = "https://releases.pagure.org/${pname}/${name}.tar.xz";
-    sha256 = "1i45f012ngpxs83m3dpmaj3hs8z7r9sbf05vnvzgs3hpgsbhxa7r";
+  url = "https://releases.pagure.org/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "0m92ihii8fgdyma9vn3s6fhq0px8n930c27zs554la0mm4548ss3";
   };
 
+  LC_ALL="en_US.utf-8";
+  buildInputs = [ glibcLocales ];
+
   meta = with stdenv.lib; {
     description = "lightweight way of building RPMs, and sabotaging them";
     homepage = https://pagure.io/rpmfluff;
diff --git a/pkgs/development/python-modules/salmon-mail/default.nix b/pkgs/development/python-modules/salmon-mail/default.nix
index b278d26b5dda..9486899c6061 100644
--- a/pkgs/development/python-modules/salmon-mail/default.nix
+++ b/pkgs/development/python-modules/salmon-mail/default.nix
@@ -1,5 +1,5 @@
 { stdenv, buildPythonPackage, fetchPypi, nose, dnspython
-,  chardet, lmtpd, pythondaemon, six, jinja2, mock }:
+,  chardet, lmtpd, python-daemon, six, jinja2, mock }:
 
 buildPythonPackage rec {
   pname = "salmon-mail";
@@ -11,7 +11,7 @@ buildPythonPackage rec {
   };
 
   checkInputs = [ nose jinja2 mock ];
-  propagatedBuildInputs = [ chardet dnspython lmtpd pythondaemon six ];
+  propagatedBuildInputs = [ chardet dnspython lmtpd python-daemon six ];
 
   # The tests use salmon executable installed by salmon itself so we need to add
   # that to PATH
diff --git a/pkgs/development/python-modules/selectors34/default.nix b/pkgs/development/python-modules/selectors34/default.nix
new file mode 100644
index 000000000000..76f6232bafa7
--- /dev/null
+++ b/pkgs/development/python-modules/selectors34/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lib
+, python
+, six
+}:
+
+buildPythonPackage rec {
+
+  name = "${pname}-${version}";
+  pname = "selectors34";
+  version = "1.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "09f5066337f8a76fb5233f267873f89a27a17c10bf79575954894bb71686451c";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  checkPhase = ''
+    ${python.interpreter} setup.py test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A backport of the selectors module from Python 3.4";
+    homepage = https://github.com/berkerpeksag/selectors34;
+    license = licenses.psfl;
+    maintainers = with maintainers; [ prusnak ];
+    };
+}
diff --git a/pkgs/development/python-modules/selenium/default.nix b/pkgs/development/python-modules/selenium/default.nix
index cd4a6389a351..b64b53fb2fbb 100644
--- a/pkgs/development/python-modules/selenium/default.nix
+++ b/pkgs/development/python-modules/selenium/default.nix
@@ -4,6 +4,7 @@
 , fetchFromGitHub
 , buildPythonPackage
 , geckodriver
+, urllib3
 , xorg
 }:
 
@@ -22,17 +23,17 @@ in
 
 buildPythonPackage rec {
   pname = "selenium";
-  version = "3.8.1";
+  version = "3.14.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lqm2md84g11g7lqi94xqb5lydm93vgmlznfhf27g6sy9ayjvgcs";
+    sha256 = "ab192cd046164c40fabcf44b47c66c8b12495142f4a69dcc55ea6eeef096e614";
   };
 
   buildInputs = [xorg.libX11];
 
   propagatedBuildInputs = [
-    geckodriver
+    geckodriver urllib3
   ];
 
   patchPhase = stdenv.lib.optionalString stdenv.isLinux ''
diff --git a/pkgs/development/python-modules/serpent/default.nix b/pkgs/development/python-modules/serpent/default.nix
new file mode 100644
index 000000000000..5ea59eb6a2a3
--- /dev/null
+++ b/pkgs/development/python-modules/serpent/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, lib
+, python
+, isPy27
+, isPy33
+, enum34
+}:
+
+buildPythonPackage rec {
+
+  name = "${pname}-${version}";
+  pname = "serpent";
+  version = "1.27";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6f8dc4317fb5b5a9629b5e518846bc9fee374b8171533726dc68df52b36ee912";
+  };
+
+  propagatedBuildInputs = lib.optionals (isPy27 || isPy33) [ enum34 ];
+
+  checkPhase = ''
+    ${python.interpreter} setup.py test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple serialization library based on ast.literal_eval";
+    homepage = https://github.com/irmen/Serpent;
+    license = licenses.mit;
+    maintainers = with maintainers; [ prusnak ];
+    };
+}
diff --git a/pkgs/development/python-modules/sh/default.nix b/pkgs/development/python-modules/sh/default.nix
new file mode 100644
index 000000000000..37388bf46900
--- /dev/null
+++ b/pkgs/development/python-modules/sh/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, coverage }:
+
+buildPythonPackage rec {
+  pname = "sh";
+  version = "1.12.14";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1z2hx357xp3v4cv44xmqp7lli3frndqpyfmpbxf7n76h7s1zaaxm";
+  };
+
+  checkInputs = [ coverage ];
+
+  # A test needs the HOME directory to be different from $TMPDIR.
+  preCheck = ''
+    HOME=$(mktemp -d)
+  '';
+
+  meta = {
+    description = "Python subprocess interface";
+    homepage = https://pypi.python.org/pypi/sh/;
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/pkgs/development/python-modules/spark_parser/default.nix b/pkgs/development/python-modules/spark_parser/default.nix
new file mode 100644
index 000000000000..badc99f5e377
--- /dev/null
+++ b/pkgs/development/python-modules/spark_parser/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, click
+}:
+
+buildPythonPackage rec {
+  pname = "spark_parser";
+  version = "1.8.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4c5e6064afbb3c114749016d585b0e4f9222d4ffa97a1854c9ab70b25783ef48";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ click ];
+
+  meta = with stdenv.lib; {
+    description = ''An Early-Algorithm Context-free grammar Parser'';
+    homepage = "https://github.com/rocky/python-spark";
+    license = licenses.mit;
+    maintainers = with maintainers; [raskin];
+  };
+
+}
diff --git a/pkgs/development/python-modules/structlog/default.nix b/pkgs/development/python-modules/structlog/default.nix
index f667f17f77df..a4130502e4b9 100644
--- a/pkgs/development/python-modules/structlog/default.nix
+++ b/pkgs/development/python-modules/structlog/default.nix
@@ -3,34 +3,30 @@
 , fetchPypi
 , fetchpatch
 , pytest
+, python-rapidjson
 , pretend
 , freezegun
+, twisted
 , simplejson
 , six
+, pythonAtLeast
 }:
 
 buildPythonPackage rec {
   pname = "structlog";
-  version = "17.2.0";
+  version = "18.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6980001045abd235fa12582222627c19b89109e58b85eb77d5a5abc778df6e20";
+    sha256 = "e361edb3b9aeaa85cd38a1bc9ddbb60cda8a991fc29de9db26832f6300e81eb4";
   };
 
-  patches = [
-    # Fix tests for pytest 3.3
-    (fetchpatch {
-      url = "https://github.com/hynek/structlog/commit/22f0ae50607a0cb024361599f84610ce290deb99.patch";
-      sha256 = "03622i13ammkpyrdk48kimbz94gbkpcmdpy0kj2z09m1kp6q2ljv";
-    })
-  ];
-
-  checkInputs = [ pytest pretend freezegun simplejson ];
+  checkInputs = [ pytest pretend freezegun simplejson twisted ]
+    ++ lib.optionals (pythonAtLeast "3.6") [ python-rapidjson ];
   propagatedBuildInputs = [ six ];
 
   checkPhase = ''
-    rm tests/test_twisted.py*
+    # rm tests/test_twisted.py*
     py.test
   '';
 
diff --git a/pkgs/development/python-modules/sympy/default.nix b/pkgs/development/python-modules/sympy/default.nix
index fb702e046a48..1bf7511d2bb9 100644
--- a/pkgs/development/python-modules/sympy/default.nix
+++ b/pkgs/development/python-modules/sympy/default.nix
@@ -8,11 +8,11 @@
 
 buildPythonPackage rec {
   pname = "sympy";
-  version = "1.2"; # Upgrades may break sage. Please test.
+  version = "1.3"; # Upgrades may break sage. Please test or ping @timokau.
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0pr2v7dl51ngch1cfs423qsb472l9ys1m8m7vrhhh99fsxqa0v18";
+    sha256 = "0m0vhyv15zszn19mk5xq3py4iijjbr7f3fpy1s57b8q7c9arncg1";
   };
 
   checkInputs = [ glibcLocales ];
diff --git a/pkgs/development/python-modules/trio/default.nix b/pkgs/development/python-modules/trio/default.nix
index ab816cde8355..215f39da30b4 100644
--- a/pkgs/development/python-modules/trio/default.nix
+++ b/pkgs/development/python-modules/trio/default.nix
@@ -9,22 +9,24 @@
 , pyopenssl
 , trustme
 , sniffio
+, jedi
+, pylint
 }:
 
 buildPythonPackage rec {
   pname = "trio";
-  version = "0.7.0";
+  version = "0.9.0";
   disabled = pythonOlder "3.5";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0df152qnj4xgxrxzd8619f8h77mzry7z8sp4m76fi21gnrcr297n";
+    sha256 = "6d905d950dfa1db3fad6b5ef5637c221947123fd2b0e112033fecfc582318c3b";
   };
 
-  checkInputs = [ pytest pyopenssl trustme ];
+  checkInputs = [ pytest pyopenssl trustme jedi pylint ];
   # It appears that the build sandbox doesn't include /etc/services, and these tests try to use it.
   checkPhase = ''
-    py.test -k 'not test_getnameinfo and not test_SocketType_resolve and not test_getprotobyname'
+    HOME="$(mktemp -d)" py.test -k 'not test_getnameinfo and not test_SocketType_resolve and not test_getprotobyname and not test_waitpid'
   '';
   propagatedBuildInputs = [
     attrs
diff --git a/pkgs/development/python-modules/trueskill/default.nix b/pkgs/development/python-modules/trueskill/default.nix
new file mode 100644
index 000000000000..2106e4d2e76c
--- /dev/null
+++ b/pkgs/development/python-modules/trueskill/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, six }:
+
+buildPythonPackage rec {
+  pname = "trueskill";
+  version = "0.4.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1fv7g1szyjykja9mzax2w4js7jm2z7wwzgnr5dqrsdi84j6v8qlx";
+  };
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  # Can't build distribute, see https://github.com/NixOS/nixpkgs/pull/49340
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "The video game rating system";
+    homepage = https://trueskill.org;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [
+      eadwu
+    ];
+  };
+}
diff --git a/pkgs/development/python-modules/twine/default.nix b/pkgs/development/python-modules/twine/default.nix
index dfcce835e658..4c031c20aa1e 100644
--- a/pkgs/development/python-modules/twine/default.nix
+++ b/pkgs/development/python-modules/twine/default.nix
@@ -6,18 +6,19 @@
 , requests_toolbelt
 , tqdm
 , pyblake2
+, readme_renderer
 }:
 
 buildPythonPackage rec {
   pname = "twine";
-  version = "1.11.0";
+  version = "1.12.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "09cz9v63f8mrs4znbjapjj2z3wdfryq8q364zm0wzjhbzzcs9n9g";
+    sha256 = "7d89bc6acafb31d124e6e5b295ef26ac77030bf098960c2a4c4e058335827c5c";
   };
 
-  propagatedBuildInputs = [ pkginfo requests requests_toolbelt tqdm pyblake2 ];
+  propagatedBuildInputs = [ pkginfo requests requests_toolbelt tqdm pyblake2 readme_renderer ];
 
   # Requires network
   doCheck = false;
diff --git a/pkgs/development/python-modules/uncompyle6/default.nix b/pkgs/development/python-modules/uncompyle6/default.nix
index 89edc8f184ca..f0428f176034 100644
--- a/pkgs/development/python-modules/uncompyle6/default.nix
+++ b/pkgs/development/python-modules/uncompyle6/default.nix
@@ -3,19 +3,30 @@
 , fetchPypi
 , spark_parser
 , xdis
+, nose
+, pytest
+, hypothesis
+, six
 }:
 
 buildPythonPackage rec {
   pname = "uncompyle6";
-  version = "2.8.3";
+  version = "3.2.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0hx5sji6qjvnq1p0zhvyk5hgracpv2w6iar1j59qwllxv115ffi1";
+    sha256 = "bd882f3c979b49d28ba7accc5ce7380ced8cab12e782e9170769ca15f0b81f8a";
   };
 
+  checkInputs = [ nose pytest hypothesis six ];
   propagatedBuildInputs = [ spark_parser xdis ];
 
+  # six import errors (yet it is supplied...)
+  checkPhase = ''
+    pytest ./pytest --ignore=pytest/test_build_const_key_map.py \
+                    --ignore=pytest/test_grammar.py
+  '';
+
   meta = with stdenv.lib; {
     description = "Python cross-version byte-code deparser";
     homepage = https://github.com/rocky/python-uncompyle6/;
diff --git a/pkgs/development/python-modules/uproot-methods/default.nix b/pkgs/development/python-modules/uproot-methods/default.nix
new file mode 100644
index 000000000000..b3c2ce714ce4
--- /dev/null
+++ b/pkgs/development/python-modules/uproot-methods/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, awkward
+}:
+
+buildPythonPackage rec {
+  version = "0.2.5";
+  pname = "uproot-methods";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7d5563b3335af414a12caf5b350c952fdc7576abb17630382de5564a7c254ae6";
+  };
+
+  propagatedBuildInputs = [ numpy awkward ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/scikit-hep/uproot-methods;
+    description = "Pythonic mix-ins for ROOT classes";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/uproot/default.nix b/pkgs/development/python-modules/uproot/default.nix
index e2cc1105f093..120f728365d3 100644
--- a/pkgs/development/python-modules/uproot/default.nix
+++ b/pkgs/development/python-modules/uproot/default.nix
@@ -1,17 +1,30 @@
-{lib, fetchPypi, buildPythonPackage, numpy}:
+{ lib
+, fetchPypi
+, buildPythonPackage
+, numpy
+, python-lz4
+, uproot-methods
+, awkward
+, cachetools
+, pythonOlder
+, pytestrunner
+, pytest
+, backports_lzma
+}:
 
 buildPythonPackage rec {
   pname = "uproot";
-  version = "2.9.11";
+  version = "3.2.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "da71e9e239129ec2ae7a62f9d35aebd46456f05e000ef14f32fe2c9fa8ec92c2";
+    sha256 = "af0a093f0788b8983d07b88fac3094b26c3e28358bc10cdb8d757cc07956f8d4";
   };
 
-  propagatedBuildInputs = [
-    numpy
-  ];
+  buildInputs = [ pytestrunner ];
+  checkInputs = [ pytest ]
+    ++ lib.optionals (pythonOlder "3.3") [ backports_lzma ];
+  propagatedBuildInputs = [ numpy python-lz4 cachetools uproot-methods awkward ];
 
   meta = with lib; {
     homepage = https://github.com/scikit-hep/uproot;
diff --git a/pkgs/development/python-modules/whichcraft/default.nix b/pkgs/development/python-modules/whichcraft/default.nix
index 89be87e18491..498c1c401f81 100644
--- a/pkgs/development/python-modules/whichcraft/default.nix
+++ b/pkgs/development/python-modules/whichcraft/default.nix
@@ -1,14 +1,17 @@
-{ lib, buildPythonPackage, fetchPypi, pytest }:
+{ lib, buildPythonPackage, fetchPypi, pytest, glibcLocales }:
 
 buildPythonPackage rec {
   pname = "whichcraft";
-  version = "0.4.1";
+  version = "0.5.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "9e0d51c9387cb7e9f28b7edb549e6a03da758f7784f991eb4397d7f7808c57fd";
+    sha256 = "fecddd531f237ffc5db8b215409afb18fa30300699064cca4817521b4fc81815";
   };
 
+  LC_ALL="en_US.utf-8";
+  buildInputs = [ glibcLocales ];
+
   checkInputs = [ pytest ];
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/xdis/default.nix b/pkgs/development/python-modules/xdis/default.nix
index 5973414f8dc5..76e424cf0118 100644
--- a/pkgs/development/python-modules/xdis/default.nix
+++ b/pkgs/development/python-modules/xdis/default.nix
@@ -1,20 +1,25 @@
 { stdenv
 , buildPythonPackage
 , fetchPypi
-, nose
+, pytest
 , six
+, click
 }:
 
 buildPythonPackage rec {
   pname = "xdis";
-  version = "3.2.4";
+  version = "3.8.8";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0g2lh70837vigcbc1i58349wp2xzrhlsg2ahc92sn8d3jwxja4dk";
+    sha256 = "4d212df8a85ab55a35f6ad71b2c29818d903c3e6a95e31eb26d5f3fc66a4e015";
   };
 
-  propagatedBuildInputs = [ nose six ];
+  checkInputs = [ pytest ];
+  propagatedBuildInputs = [ six click ];
+
+  # newest release moves to pytest (tests not packaged with release)
+  doCheck = false;
 
   meta = with stdenv.lib; {
     description = "Python cross-version byte-code disassembler and marshal routines";
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index 06c5fe3a1be0..b77215a2d246 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -1,16 +1,32 @@
-{ stdenv, buildPythonPackage, fetchPypi
-, netifaces, six, enum-compat }:
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ifaddr
+, typing
+, isPy27
+, pythonOlder
+, python
+}:
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.20.0";
+  version = "0.21.3";
+  disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6e3f1e7b5871e3d1410ac29b9fb85aafc1e2d661ed596b07a6f84559a475efcb";
+    sha256 = "5b52dfdf4e665d98a17bf9aa50dea7a8c98e25f972d9c1d7660e2b978a1f5713";
   };
 
-  propagatedBuildInputs = [ netifaces six enum-compat ];
+  propagatedBuildInputs = [ ifaddr ]
+    ++ stdenv.lib.optionals (pythonOlder "3.5") [ typing ];
+
+  # tests not included with pypi release
+  doCheck = false;
+
+  checkPhase = ''
+    ${python.interpreter} test_zeroconf.py
+  '';
 
   meta = with stdenv.lib; {
     description = "A pure python implementation of multicast DNS service discovery";
diff --git a/pkgs/development/python-modules/zstd/default.nix b/pkgs/development/python-modules/zstd/default.nix
new file mode 100644
index 000000000000..53c3c8969abf
--- /dev/null
+++ b/pkgs/development/python-modules/zstd/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, pkgconfig, fetchpatch, fetchFromGitHub, buildPythonPackage
+, zstd, pytest }:
+
+buildPythonPackage rec {
+  pname = "zstd";
+  version = "1.3.5.1";
+
+  # Switch back to fetchPypi when tests/ is included, see https://github.com/NixOS/nixpkgs/pull/49339
+  src = fetchFromGitHub {
+    owner = "sergey-dryabzhinsky";
+    repo = "python-zstd";
+    rev = "v${version}";
+    sha256 = "08n1vz4zavas4cgzpdfcbpy33lnv39xxhq5mgj0zv3xi03ypc1rl";
+  };
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "/usr/bin/pkg-config" "${pkgconfig}/bin/pkg-config"
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ zstd ];
+
+  setupPyBuildFlags = [
+    "--external"
+    "--include-dirs=${zstd}/include"
+    "--libraries=zstd"
+    "--library-dirs=${zstd}/lib"
+  ];
+
+  # Running tests via setup.py triggers an attempt to recompile with the vendored zstd
+  ZSTD_EXTERNAL = 1;
+  VERSION = zstd.version;
+  PKG_VERSION = version;
+
+  checkInputs = [ pytest ];
+  checkPhase = ''
+    pytest
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple python bindings to Yann Collet ZSTD compression library";
+    homepage = https://github.com/sergey-dryabzhinsky/python-zstd;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [
+      eadwu
+    ];
+  };
+}