anchor.diff:  , colorcet
   , param
   , pyct
  -, pyyaml
  -, requests
  -, scikitimage
   , scipy
   , pytestCheckHook
  -, pytest-benchmark
  -, flake8
   , nbsmoke
   , fastparquet
  -, testpath
   , nbconvert
   , pytest-xdist
  +, netcdf4
   }:
   
   buildPythonPackage rec {
     pname = "datashader";
  -  version = "0.11.1";
  +  version = "0.12.0";
   
     src = fetchPypi {
       inherit pname version;
  -    sha256 = "b1f80415f72f92ccb660aaea7b2881ddd35d07254f7c44101709d42e819d6be6";
  +    sha256 = "sha256-CnV6ne3cbMtoVUBDqXf4n3tlEMzuKp7H8Ju7Qrzn9es=";
     };
  -
  -  patches = [
  -    (fetchpatch {
  -      # Unpins pyct==0.46 (Sep. 11, 2020).
  -      # Will be incorporated into the next datashader release after 0.11.1
  -      url = "https://github.com/holoviz/datashader/pull/960/commits/d7a462fa399106c34fd0d44505a8a73789dbf874.patch";
  -      sha256 = "1wqsk9dpxnkxr49fa7y5q6ahin80cvys05lnirs2w2p1dja35y4x";
  -    })
  -  ];
   
     propagatedBuildInputs = [
       dask
  -    distributed
       bokeh
       toolz
       datashape
  
positive.code:     colorcet
      param
      pyct
      pyyaml
      requests
      scikitimage
      scipy
      testpath
    ];
  
    checkInputs = [
      pytestCheckHook
      pytest-benchmark
      pytest-xdist # not needed
      flake8
      nbsmoke
      fastparquet
      pandas
      nbconvert
    ];
  
    # dask doesn't do well with large core counts
    # checkPhase = ''
    #   pytest -n $NIX_BUILD_CORES datashader -k 'not dask.array and not test_simple_nested'
    # '';
  
    pytestFlagsArray = [
      "-n $NIX_BUILD_CORES"
      "datashader"
    ];
  
    meta = with lib; {
      description = "Data visualization toolchain based on aggregating into a grid";
      homepage = "https://datashader.org";
      license = licenses.bsd3;
  
negative.code: { lib
  , buildPythonPackage
  , fetchPypi
  , dask
  , bokeh
  , toolz
  , datashape
  