summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorFrederik Rietdijk <freddyrietdijk@fridh.nl>2018-01-01 18:06:52 +0100
committerGitHub <noreply@github.com>2018-01-01 18:06:52 +0100
commite576535408530584d3590ecbead71d30dbfcfb07 (patch)
tree51979001c3000fc2e6e2ec012c08f9304de952b8 /pkgs
parent1869e7e5b0580e9398529dbebde7e983193c445e (diff)
parentb998bfa8ba92a049a3ac911fb048c230f9c23991 (diff)
downloadnixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.tar
nixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.tar.gz
nixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.tar.bz2
nixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.tar.lz
nixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.tar.xz
nixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.tar.zst
nixpkgs-e576535408530584d3590ecbead71d30dbfcfb07.zip
Merge pull request #33280 from NixOS/python-unstable
Python: upgrade package set
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/python-modules/blaze/default.nix12
-rw-r--r--pkgs/development/python-modules/brotlipy/default.nix36
-rw-r--r--pkgs/development/python-modules/decorator/default.nix4
-rw-r--r--pkgs/development/python-modules/fastimport/default.nix8
-rw-r--r--pkgs/development/python-modules/gflags/default.nix8
-rw-r--r--pkgs/development/python-modules/jellyfish/default.nix24
-rw-r--r--pkgs/development/python-modules/mygpoclient/default.nix5
-rw-r--r--pkgs/development/python-modules/networkx/default.nix34
-rw-r--r--pkgs/development/python-modules/pandas/default.nix4
-rw-r--r--pkgs/development/python-modules/parse-type/default.nix7
-rw-r--r--pkgs/development/python-modules/partd/default.nix35
-rw-r--r--pkgs/development/python-modules/plone-testing/default.nix27
-rw-r--r--pkgs/development/python-modules/pycangjie/default.nix13
-rw-r--r--pkgs/development/python-modules/pysc2/default.nix2
-rw-r--r--pkgs/development/python-modules/python-fuse/default.nix28
-rw-r--r--pkgs/development/python-modules/pywbem/default.nix2
-rw-r--r--pkgs/development/python-modules/regex/default.nix23
-rw-r--r--pkgs/development/python-modules/spacy/default.nix17
-rw-r--r--pkgs/development/python-modules/splinter/default.nix30
-rw-r--r--pkgs/development/python-modules/werkzeug/default.nix4
-rw-r--r--pkgs/servers/web-apps/searx/default.nix33
-rw-r--r--pkgs/top-level/python-packages.nix111
22 files changed, 286 insertions, 181 deletions
diff --git a/pkgs/development/python-modules/blaze/default.nix b/pkgs/development/python-modules/blaze/default.nix
index 017b85cacc7..74e327fd342 100644
--- a/pkgs/development/python-modules/blaze/default.nix
+++ b/pkgs/development/python-modules/blaze/default.nix
@@ -25,12 +25,11 @@
 
 buildPythonPackage rec {
   pname = "blaze";
-  version = "0.11.0";
-  name = "${pname}-${version}";
+  version = "0.11.3";
 
   src = fetchurl {
     url = "https://github.com/blaze/blaze/archive/${version}.tar.gz";
-    sha256 = "07zrrxkmdqk84xvdmp29859zcfzlpx5pz6g62l28nqp6n6a7yq9a";
+    sha256 = "075gqc9d7g284z4nfwv5zbq99ln22w25l4lcndjg3v10kmsjadww";
   };
 
   checkInputs = [ pytest ];
@@ -56,13 +55,8 @@ buildPythonPackage rec {
     toolz
   ];
 
-  # Failing test
-  # ERROR collecting blaze/tests/test_interactive.py
-  # E   networkx.exception.NetworkXNoPath: node <class 'list'> not
-  # reachable from <class 'dask.array.core.Array'>
-  doCheck = false;
-
   checkPhase = ''
+    rm pytest.ini # Not interested in coverage
     py.test blaze/tests
   '';
 
diff --git a/pkgs/development/python-modules/brotlipy/default.nix b/pkgs/development/python-modules/brotlipy/default.nix
new file mode 100644
index 00000000000..1dd2a070480
--- /dev/null
+++ b/pkgs/development/python-modules/brotlipy/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, cffi
+, enum34
+, construct
+, pytest
+, hypothesis
+}:
+
+buildPythonPackage rec {
+  pname = "brotlipy";
+  version = "0.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "36def0b859beaf21910157b4c33eb3b06d8ce459c942102f16988cca6ea164df";
+  };
+
+  propagatedBuildInputs = [ cffi enum34 construct ];
+
+  checkInputs = [ pytest hypothesis ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  # Missing test files
+  doCheck = false;
+
+  meta = {
+    description = "Python bindings for the reference Brotli encoder/decoder";
+    homepage = "https://github.com/python-hyper/brotlipy/";
+    license = lib.licenses.mit;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/decorator/default.nix b/pkgs/development/python-modules/decorator/default.nix
index 5cdbbfce77f..e3ee3117501 100644
--- a/pkgs/development/python-modules/decorator/default.nix
+++ b/pkgs/development/python-modules/decorator/default.nix
@@ -5,11 +5,11 @@
 
 buildPythonPackage rec {
   pname = "decorator";
-  version = "4.0.11";
+  version = "4.1.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "953d6bf082b100f43229cf547f4f97f97e970f5ad645ee7601d55ff87afdfe76";
+    sha256 = "7cb64d38cb8002971710c8899fbdfb859a23a364b7c99dab19d1f719c2ba16b5";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/fastimport/default.nix b/pkgs/development/python-modules/fastimport/default.nix
index ee1048ec5fa..44f7bcdab06 100644
--- a/pkgs/development/python-modules/fastimport/default.nix
+++ b/pkgs/development/python-modules/fastimport/default.nix
@@ -1,11 +1,11 @@
-{ stdenv, buildPythonPackage, python, fetchurl }:
+{ stdenv, buildPythonPackage, python, fetchPypi}:
 
 buildPythonPackage rec {
-  name = "fastimport-${version}";
+  pname = "fastimport";
   version = "0.9.6";
 
-  src = fetchurl {
-    url = "mirror://pypi/f/fastimport/${name}.tar.gz";
+  src = fetchPypi {
+    inherit pname version;
     sha256 = "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43";
   };
 
diff --git a/pkgs/development/python-modules/gflags/default.nix b/pkgs/development/python-modules/gflags/default.nix
index 6fe4b7fcab8..9eb8e3b2d6c 100644
--- a/pkgs/development/python-modules/gflags/default.nix
+++ b/pkgs/development/python-modules/gflags/default.nix
@@ -2,16 +2,14 @@
 
 buildPythonPackage rec {
   version = "3.1.2";
-  pname = "gflags";
-  name = pname + "-" + version;
+  pname = "python-gflags";
 
   src = fetchPypi {
-    inherit version;
-    pname = "python-gflags";
+    inherit pname version;
     sha256 = "40ae131e899ef68e9e14aa53ca063839c34f6a168afe622217b5b875492a1ee2";
   };
 
-  buildInputs = [ pytest ];
+  checkInputs = [ pytest ];
 
   propagatedBuildInputs = [ six ];
 
diff --git a/pkgs/development/python-modules/jellyfish/default.nix b/pkgs/development/python-modules/jellyfish/default.nix
new file mode 100644
index 00000000000..db83e6cb299
--- /dev/null
+++ b/pkgs/development/python-modules/jellyfish/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, unicodecsv
+}:
+
+buildPythonPackage rec {
+  pname = "jellyfish";
+  version = "0.5.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "887a9a49d0caee913a883c3e7eb185f6260ebe2137562365be422d1316bd39c9";
+  };
+
+  checkInputs = [ pytest unicodecsv ];
+
+  meta = {
+    homepage = https://github.com/sunlightlabs/jellyfish;
+    description = "Approximate and phonetic matching of strings";
+    maintainers = with lib.maintainers; [ koral ];
+  };
+}
diff --git a/pkgs/development/python-modules/mygpoclient/default.nix b/pkgs/development/python-modules/mygpoclient/default.nix
index 14819b0b66e..097898a2d84 100644
--- a/pkgs/development/python-modules/mygpoclient/default.nix
+++ b/pkgs/development/python-modules/mygpoclient/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, buildPythonPackage, nose, minimock }:
 
 buildPythonPackage rec {
-  name = "mygpoclient-${version}";
+  pname = "mypgoclient";
   version = "1.8";
 
   src = fetchFromGitHub {
@@ -11,7 +11,7 @@ buildPythonPackage rec {
     sha256 = "0aa28wc55x3rxa7clwfv5v5500ffyaq0vkxaa3v01y1r93dxkdvp";
   };
 
-  buildInputs = [ nose minimock ];
+  checkInputs = [ nose minimock ];
 
   checkPhase = ''
     nosetests
@@ -25,7 +25,6 @@ buildPythonPackage rec {
     '';
     homepage = https://github.com/gpodder/mygpoclient;
     license = with licenses; [ gpl3 ];
-    platforms = with platforms; linux ++ darwin;
     maintainers = with maintainers; [ skeidel ];
   };
 }
diff --git a/pkgs/development/python-modules/networkx/default.nix b/pkgs/development/python-modules/networkx/default.nix
new file mode 100644
index 00000000000..f6fc4139c85
--- /dev/null
+++ b/pkgs/development/python-modules/networkx/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, decorator
+, isPy36
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "networkx";
+  version = "1.11";
+
+  # Currently broken on PyPy.
+  # https://github.com/networkx/networkx/pull/1361
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd";
+  };
+
+  checkInputs = [ nose ];
+  propagatedBuildInputs = [ decorator ];
+
+  # 17 failures with 3.6 https://github.com/networkx/networkx/issues/2396#issuecomment-304437299
+  doCheck = !(isPy36);
+
+  meta = {
+    homepage = "https://networkx.github.io/";
+    description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks";
+    license = lib.licenses.bsd3;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/pandas/default.nix b/pkgs/development/python-modules/pandas/default.nix
index e589e777f0d..3f9188a6322 100644
--- a/pkgs/development/python-modules/pandas/default.nix
+++ b/pkgs/development/python-modules/pandas/default.nix
@@ -28,12 +28,12 @@ let
   inherit (stdenv) isDarwin;
 in buildPythonPackage rec {
   pname = "pandas";
-  version = "0.21.1";
+  version = "0.22.0";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c5f5cba88bf0659554c41c909e1f78139f6fce8fa9315a29a23692b38ff9788a";
+    sha256 = "44a94091dd71f05922eec661638ec1a35f26d573c119aa2fad964f10a2880e6c";
   };
 
   LC_ALL = "en_US.UTF-8";
diff --git a/pkgs/development/python-modules/parse-type/default.nix b/pkgs/development/python-modules/parse-type/default.nix
index 69a02c42b74..8c927e4aed0 100644
--- a/pkgs/development/python-modules/parse-type/default.nix
+++ b/pkgs/development/python-modules/parse-type/default.nix
@@ -3,14 +3,13 @@
 , pytest, pytestrunner
 , parse, six, enum34
 }:
+
 buildPythonPackage rec {
-  pname = "parse-type";
+  pname = "parse_type";
   version = "0.3.4";
-  name = "${pname}-${version}";
 
   src = fetchPypi {
-    inherit version;
-    pname = "parse_type";
+    inherit pname version;
     sha256 = "3dd0b323bafcb8c25e000ce5589042a1c99cba9c3bec77b9f591e46bc9606147";
   };
 
diff --git a/pkgs/development/python-modules/partd/default.nix b/pkgs/development/python-modules/partd/default.nix
new file mode 100644
index 00000000000..1098c550839
--- /dev/null
+++ b/pkgs/development/python-modules/partd/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytest
+, locket
+, numpy
+, pandas
+, pyzmq
+, toolz
+}:
+
+buildPythonPackage rec {
+  pname = "partd";
+  version = "0.3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "67291f1c4827cde3e0148b3be5d69af64b6d6169feb9ba88f0a6cfe77089400f";
+  };
+
+  checkInputs = [ pytest ];
+
+  propagatedBuildInputs = [ locket numpy pandas pyzmq toolz ];
+
+  checkPhase = ''
+    rm partd/tests/test_zmq.py # requires network & fails
+    py.test
+  '';
+
+  meta = {
+    description = "Appendable key-value storage";
+    license = with lib.licenses; [ bsd3 ];
+    homepage = https://github.com/dask/partd/;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/plone-testing/default.nix b/pkgs/development/python-modules/plone-testing/default.nix
new file mode 100644
index 00000000000..910fc034e36
--- /dev/null
+++ b/pkgs/development/python-modules/plone-testing/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, zope_testing
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "plone.testing";
+  version = "5.1.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2ca558a910b93355b760535b233518be3a06c58e46160487bf802b6f7cb1e511";
+  };
+
+  propagatedBuildInputs = [ setuptools zope_testing ];
+
+  # Huge amount of testing dependencies (including Zope2)
+  doCheck = false;
+
+  meta = {
+    description = "Testing infrastructure for Zope and Plone projects";
+    homepage = https://github.com/plone/plone.testing;
+    license = lib.licenses.bsd3;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/pycangjie/default.nix b/pkgs/development/python-modules/pycangjie/default.nix
index 4995a714693..80b17034aa0 100644
--- a/pkgs/development/python-modules/pycangjie/default.nix
+++ b/pkgs/development/python-modules/pycangjie/default.nix
@@ -1,21 +1,22 @@
 { stdenv, fetchurl, bash, autoconf, automake, libtool, pkgconfig, libcangjie
-, sqlite, python, cython
+, sqlite, buildPythonPackage, cython
 }:
 
-stdenv.mkDerivation rec {
-  name = "${python.libPrefix}-pycangjie-${version}";
-  version = "1.3_rev_${rev}";
+let
   rev = "361bb413203fd43bab624d98edf6f7d20ce6bfd3";
+in buildPythonPackage rec {
+  pname = "pycangjie";
+  version = "1.3_rev_${rev}";
+  format = "other";
 
   src = fetchurl {
-    name = "${name}.tar.gz";
     url = "https://github.com/Cangjians/pycangjie/archive/${rev}.tar.gz";
     sha256 = "12yi09nyffmn4va7lzk4irw349qzlbxgsnb89dh15cnw0xmrin05";
   };
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [
-    autoconf automake libtool libcangjie sqlite python cython
+    autoconf automake libtool libcangjie sqlite cython
   ];
 
   preConfigure = ''
diff --git a/pkgs/development/python-modules/pysc2/default.nix b/pkgs/development/python-modules/pysc2/default.nix
index a2dfd53b795..89799988fa1 100644
--- a/pkgs/development/python-modules/pysc2/default.nix
+++ b/pkgs/development/python-modules/pysc2/default.nix
@@ -18,8 +18,8 @@
 }:
 
 buildPythonPackage rec {
+  pname = "PySC2";
   version = "1.2";
-  name = "PySC2-${version}";
 
   src = fetchFromGitHub {
     owner = "deepmind";
diff --git a/pkgs/development/python-modules/python-fuse/default.nix b/pkgs/development/python-modules/python-fuse/default.nix
index d9debce6aec..02b86b3b33a 100644
--- a/pkgs/development/python-modules/python-fuse/default.nix
+++ b/pkgs/development/python-modules/python-fuse/default.nix
@@ -7,21 +7,21 @@
 }:
 
 buildPythonPackage rec {
-    baseName = "fuse";
-    version = "0.2.1";
-    name = "${baseName}-${version}";
-    disabled = isPy3k;
+  pname = "fuse";
+  version = "0.2.1";
 
-    src = fetchurl {
-      url = "mirror://sourceforge/fuse/fuse-python-${version}.tar.gz";
-      sha256 = "06rmp1ap6flh64m81j0n3a357ij2vj9zwcvvw0p31y6hz1id9shi";
-    };
+  disabled = isPy3k;
 
-    nativeBuildInputs = [ pkgconfig ];
-    buildInputs = [ fuse ];
+  src = fetchurl {
+    url = "mirror://sourceforge/fuse/fuse-python-${version}.tar.gz";
+    sha256 = "06rmp1ap6flh64m81j0n3a357ij2vj9zwcvvw0p31y6hz1id9shi";
+  };
 
-    meta = {
-      description = "Python bindings for FUSE";
-      license = lib.licenses.lgpl21;
-    };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ fuse ];
+
+  meta = {
+    description = "Python bindings for FUSE";
+    license = lib.licenses.lgpl21;
+  };
 }
diff --git a/pkgs/development/python-modules/pywbem/default.nix b/pkgs/development/python-modules/pywbem/default.nix
index 8e10fbb2258..d09a9bbd6d8 100644
--- a/pkgs/development/python-modules/pywbem/default.nix
+++ b/pkgs/development/python-modules/pywbem/default.nix
@@ -4,7 +4,7 @@
 }:
 
 buildPythonPackage rec {
-  name  = "pywbem-${version}";
+  pname = "pywbem";
   version = "0.10.0";
 
   src = fetchFromGitHub {
diff --git a/pkgs/development/python-modules/regex/default.nix b/pkgs/development/python-modules/regex/default.nix
new file mode 100644
index 00000000000..a1349ae5c36
--- /dev/null
+++ b/pkgs/development/python-modules/regex/default.nix
@@ -0,0 +1,23 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+}:
+
+
+buildPythonPackage rec {
+  pname = "regex";
+  version = "2017.12.12";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ee069308c2757e565cc2b6f417ba5288e76cfe4c1764b6826063f4fbd53219d7";
+  };
+
+  meta = {
+    description = "Alternative regular expression module, to replace re";
+    homepage = "https://bitbucket.org/mrabarnett/mrab-regex";
+    license = lib.licenses.psfl;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ abbradar ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/spacy/default.nix b/pkgs/development/python-modules/spacy/default.nix
index 40df45616e9..6c7c3c8400c 100644
--- a/pkgs/development/python-modules/spacy/default.nix
+++ b/pkgs/development/python-modules/spacy/default.nix
@@ -19,23 +19,12 @@
 , ftfy
 , thinc
 , pip
+, regex
 }:
-let
-  enableDebugging = true;
-  regexLocked = buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "regex";
-    version = "2017.04.05";
 
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "0c95gf3jzz8mv52lkgq0h7sbasjwvdhghm4s0phmy5k9sr78f4fq";
-    };
-  };
-in buildPythonPackage rec {
+buildPythonPackage rec {
   pname = "spacy";
   version = "1.8.2";
-  name = pname + "-" + version;
 
   src = fetchFromGitHub {
     owner = "explosion";
@@ -56,7 +45,7 @@ in buildPythonPackage rec {
    ujson
    dill
    requests
-   regexLocked
+   regex
    ftfy
    thinc
    pytest
diff --git a/pkgs/development/python-modules/splinter/default.nix b/pkgs/development/python-modules/splinter/default.nix
new file mode 100644
index 00000000000..abd9bd230d4
--- /dev/null
+++ b/pkgs/development/python-modules/splinter/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, selenium
+, flask
+, coverage
+}:
+
+buildPythonPackage rec {
+  pname = "splinter";
+  version = "0.7.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "f97119f84d339067169451d56043f37f6b0a504a17a7ac6e48c91c012be72af6";
+  };
+
+  propagatedBuildInputs = [ selenium ];
+
+  checkInputs = [ flask coverage ];
+
+  # No tests included
+  doCheck = false;
+
+  meta = {
+    description = "Browser abstraction for web acceptance testing";
+    homepage = https://github.com/cobrateam/splinter;
+    license = lib.licenses.bsd3;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/python-modules/werkzeug/default.nix b/pkgs/development/python-modules/werkzeug/default.nix
index 254897be78b..78380900416 100644
--- a/pkgs/development/python-modules/werkzeug/default.nix
+++ b/pkgs/development/python-modules/werkzeug/default.nix
@@ -5,11 +5,11 @@
 buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "Werkzeug";
-  version = "0.13";
+  version = "0.14.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "6246e5fc98a505824113fb6aca993d45ea284a2bcffdc2c65d0c538e53e4abd3";
+    sha256 = "c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c";
   };
 
   propagatedBuildInputs = [ itsdangerous ];
diff --git a/pkgs/servers/web-apps/searx/default.nix b/pkgs/servers/web-apps/searx/default.nix
index 1c5f52d4938..28eeeb11259 100644
--- a/pkgs/servers/web-apps/searx/default.nix
+++ b/pkgs/servers/web-apps/searx/default.nix
@@ -1,34 +1,43 @@
 { lib, pythonPackages, fetchFromGitHub }:
 
-pythonPackages.buildPythonApplication rec {
-  name = "searx-${version}";
-  version = "0.12.0";
-  namePrefix = "";
+with pythonPackages;
 
+buildPythonApplication rec {
+  pname = "searx";
+  version = "0.13.1";
+
+  # Can not use PyPI because certain test files are missing.
   src = fetchFromGitHub {
     owner = "asciimoo";
     repo = "searx";
     rev = "v${version}";
-    sha256 = "196lk8dpv8fsjgmwlqik6j6rabvfid41fir6lzqy03hv7ydcw1k0";
+    sha256 = "0nizxq9ggf9g8f8pxn2hfm0kn20356v65h4cj9s73n742nkv6ani";
   };
 
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace 'certifi==2017.1.23' 'certifi' \
-      --replace 'lxml==3.7.3' 'lxml' \
-      --replace 'pyopenssl==16.2.0' 'pyopenssl' \
+      --replace 'certifi==2017.11.5' 'certifi' \
+      --replace 'flask==0.12.2' 'flask==0.12.*' \
+      --replace 'flask-babel==0.11.2' 'flask-babel==0.11.*' \
+      --replace 'lxml==4.1.1' 'lxml==4.1.*' \
+      --replace 'idna==2.5' 'idna' \
       --replace 'pygments==2.1.3' 'pygments>=2.1,<3.0' \
-      --replace 'flask==0.12' 'flask==0.12.*' \
-      --replace 'requests[socks]==2.13.0' 'requests[socks]==2.*' \
-      --replace 'python-dateutil==2.6.0' 'python-dateutil==2.6.*'
+      --replace 'pyopenssl==17.4.0' 'pyopenssl' \
+      --replace 'python-dateutil==2.6.1' 'python-dateutil==2.6.*'
   '';
 
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = [
     pyyaml lxml grequests flaskbabel flask requests
     gevent speaklater Babel pytz dateutil pygments
     pyasn1 pyasn1-modules ndg-httpsclient certifi pysocks
   ];
 
+  checkInputs = [ splinter mock plone-testing robotsuite unittest2 ];
+
+  preCheck = ''
+    rm tests/test_robot.py # A variable that is imported is commented out
+  '';
+
   meta = with lib; {
     homepage = https://github.com/asciimoo/searx;
     description = "A privacy-respecting, hackable metasearch engine";
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 471eb1f52a2..b86efd7fd56 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -7001,23 +7001,7 @@ in {
     };
   };
 
-  regex = buildPythonPackage rec {
-    name = "regex-${version}";
-    version = "2016.11.18";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/regex/${name}.tar.gz";
-      sha256 = "126ds2b355n3pgl7brshhscpxn14ycs0yznzl8k4akj4sps1i6c6";
-    };
-
-    meta = {
-      description = "Alternative regular expression module, to replace re";
-      homepage = "https://bitbucket.org/mrabarnett/mrab-regex";
-      license = licenses.psfl;
-      platforms = platforms.linux;
-      maintainers = with maintainers; [ abbradar ];
-    };
-  };
+  regex = callPackage ../development/python-modules/regex { };
 
   repoze_lru = buildPythonPackage rec {
     name = "repoze.lru-0.6";
@@ -7033,8 +7017,6 @@ in {
     };
   };
 
-
-
   repoze_sphinx_autointerface = buildPythonPackage rec {
     name = "repoze.sphinx.autointerface-0.7.1";
 
@@ -9518,23 +9500,7 @@ in {
 
   jedi = callPackage ../development/python-modules/jedi { };
 
-  jellyfish = buildPythonPackage rec {
-    version = "0.5.2";
-    name = "jellyfish-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/j/jellyfish/${name}.tar.gz";
-      sha256 = "15xk0kbr1gig9r1mp22lk9mk3jyi886h8ywn9diixhnyl4q6dacn";
-    };
-
-    buildInputs = with self; [ pytest unicodecsv ];
-
-    meta = {
-      homepage = https://github.com/sunlightlabs/jellyfish;
-      description = "Approximate and phonetic matching of strings";
-      maintainers = with maintainers; [ koral ];
-    };
-  };
+  jellyfish = callPackage ../development/python-modules/jellyfish { };
 
   j2cli = buildPythonPackage rec {
     name = "j2cli-${version}";
@@ -10536,23 +10502,7 @@ in {
 
   mistune = callPackage ../development/python-modules/mistune { };
 
-  brotlipy = buildPythonPackage rec {
-    name = "brotlipy-${version}";
-    version = "0.6.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/b/brotlipy/${name}.tar.gz";
-      sha256 = "10s2y19zywfkf3sksrw81czhva759aki0clld2pnnlgf64sz7016";
-    };
-
-    propagatedBuildInputs = with self; [ cffi enum34 construct ];
-
-    meta = {
-      description = "Python bindings for the reference Brotli encoder/decoder";
-      homepage = "https://github.com/python-hyper/brotlipy/";
-      license = licenses.mit;
-    };
-  };
+  brotlipy = callPackage ../development/python-modules/brotlipy { };
 
   sortedcontainers = buildPythonPackage rec {
     name = "sortedcontainers-${version}";
@@ -12092,6 +12042,8 @@ in {
     };
   };
 
+  plone-testing = callPackage ../development/python-modules/plone-testing { };
+
   ply = buildPythonPackage (rec {
     name = "ply-3.8";
 
@@ -12689,30 +12641,7 @@ in {
 
   parso = callPackage ../development/python-modules/parso { };
 
-  partd = buildPythonPackage rec {
-    name = "partd-${version}";
-    version = "0.3.7";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/partd/${name}.tar.gz";
-      sha256 = "066d254d2dh9xcanffgkjgwxpz5v0059b063bij10fvzl2y49hzx";
-    };
-
-    buildInputs = with self; [ pytest ];
-
-    propagatedBuildInputs = with self; [ locket numpy pandas pyzmq toolz ];
-
-    checkPhase = ''
-      rm partd/tests/test_zmq.py # requires network & fails
-      py.test
-    '';
-
-    meta = {
-      description = "Appendable key-value storage";
-      license = with licenses; [ bsd3 ];
-      homepage = https://github.com/dask/partd/;
-    };
-  };
+  partd = callPackage ../development/python-modules/partd { };
 
   patch = buildPythonPackage rec {
     name = "${pname}-${version}";
@@ -17389,6 +17318,8 @@ in {
     };
   });
 
+  splinter = callPackage ../development/python-modules/splinter { };
+
   spotipy = callPackage ../development/python-modules/spotipy { };
 
   Pweave = buildPythonPackage (rec {
@@ -20952,31 +20883,7 @@ EOF
     };
   };
 
-  networkx = buildPythonPackage rec {
-    version = "1.11";
-    name = "networkx-${version}";
-
-    # Currently broken on PyPy.
-    # https://github.com/networkx/networkx/pull/1361
-    disabled = isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/n/networkx/${name}.tar.gz";
-      sha256 = "1f74s56xb4ggixiq0vxyfxsfk8p20c7a099lpcf60izv1php03hd";
-    };
-
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ decorator ];
-
-    # 17 failures with 3.6 https://github.com/networkx/networkx/issues/2396#issuecomment-304437299
-    doCheck = !(isPy36);
-
-    meta = {
-      homepage = "https://networkx.github.io/";
-      description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks";
-      license = licenses.bsd3;
-    };
-  };
+  networkx = callPackage ../development/python-modules/networkx { };
 
   ofxclient = callPackage ../development/python-modules/ofxclient {};