anchor.diff:  
     nativeBuildInputs = [ cython ];
   
  -  buildInputs = [ hdf5 bzip2 lzo c-blosc ];
  -  propagatedBuildInputs = [ numpy numexpr six mock ];
  +  buildInputs = [
  +    bzip2
  +    c-blosc
  +    hdf5
  +    lzo
  +  ];
  +  propagatedBuildInputs = [
  +    numpy
  +    numexpr
  +    setuptools  # uses pkg_resources at runtime
  +  ];
   
  +  patches = [
  +    (fetchpatch {
  +      # Needed for numpy >= 1.20.0
  +      name = "tables-pr-862-use-lowercase-numpy-dtypes.patch";
  +      url = "https://github.com/PyTables/PyTables/commit/93a3272b8fe754095637628b4d312400e24ae654.patch";
  +      sha256 = "00czgxnm1dxp9763va9xw1nc7dd7kxh9hjcg9klim52519hkbhi4";
  +    })
  +  ];
     # When doing `make distclean`, ignore docs
     postPatch = ''
       substituteInPlace Makefile --replace "src doc" "src"
  +    # Force test suite to error when unittest runner fails
  +    substituteInPlace tables/tests/test_suite.py \
  +      --replace "return 0" "assert result.wasSuccessful(); return 0" \
  +      --replace "return 1" "assert result.wasSuccessful(); return 1"
     '';
   
     # Regenerate C code with Cython
  
positive.code:     make distclean
    '';
  
    # The setup script complains about missing run-paths, but they are
    # actually set.
    setupPyBuildFlags = [
      "--hdf5=${lib.getDev hdf5}"
      "--lzo=${lib.getDev lzo}"
      "--bzip2=${lib.getDev bzip2}"
      "--blosc=${lib.getDev c-blosc}"
    ];
    # Run the test suite.
    # It requires the build path to be in the python search path.
    # These tests take quite some time.
    # If the hdf5 library is built with zlib then there is only one
    # test-failure. That is the same failure as described in the following
    # github issue:
    #     https://github.com/PyTables/PyTables/issues/269
    checkPhase = ''
      ${python.interpreter} <<EOF
      import sysconfig
      import sys
      import os
      f = "lib.{platform}-{version[0]}.{version[1]}"
      lib = f.format(platform=sysconfig.get_platform(),
                     version=sys.version_info)
      build = os.path.join(os.getcwd(), 'build', lib)
      sys.path.insert(0, build)
      import tables
      r = tables.test()
      if not r.wasSuccessful():
          sys.exit(1)
      EOF
    '';
  
    # Disable tests until the failure described above is fixed.
    doCheck = false;
  
    meta = with lib; {
      description = "Hierarchical datasets for Python";
      homepage = "http://www.pytables.org/";
      license = licenses.bsd2;
    };
  }
  
negative.code: { lib
  , fetchPypi
  , fetchurl
  , fetchpatch
  , buildPythonPackage
  , pythonOlder
  , python
  , bzip2
  , c-blosc
  , cython
  , hdf5
  , lzo
  , numpy
  , numexpr
  , setuptools
    # Test inputs
  , pytestCheckHook
  }:
  
  buildPythonPackage rec {
    pname = "tables";
    version = "3.6.1";
    disabled = pythonOlder "3.5";
  
    src = fetchPypi {
      inherit pname version;
  