anchor.diff:  
   buildPythonPackage rec {
     pname = "sanic-testing";
  -  version = "0.3.1";
  +  version = "0.4.0";
   
     src = fetchFromGitHub {
       owner = "sanic-org";
       repo = "sanic-testing";
       rev = "v${version}";
  -    hash = "sha256-hBAq+/BKs0a01M89Nb8HaClqxB+W5PTfjVzef/m9SWs=";
  +    sha256 = "0li984imqmqc001iw4m4b6cqik3d9nb4b3yvamvbwkb6hgd94sck";
     };
   
  +  propagatedBuildInputs = [
  +    httpx
  +    sanic
  +    websockets
  +  ];
  +
  +  checkInputs = [
  +    pytest-asyncio
  +    pytestCheckHook
  +  ];
  +
     postPatch = ''
  +    # https://github.com/sanic-org/sanic-testing/issues/19
       substituteInPlace setup.py \
  -      --replace 'httpx>=0.16, <0.18' 'httpx' \
  -      --replace 'httpcore==0.12.*' 'httpcore'
  +      --replace '"websockets==8.1",' '"websockets>=9.1",'
     '';
  -
  -  propagatedBuildInputs = [ httpx sanic websockets httpcore ];
   
     # `sanic` is explicitly set to null when building `sanic` itself
     # to prevent infinite recursion.  In that case we skip running
  
positive.code: , buildPythonPackage
  , fetchFromGitHub
  , pytestCheckHook
  , httpcore
  , httpx
  , pytest-asyncio
  , sanic
  
negative.code:   doCheck = sanic != null;
    dontUsePythonImportsCheck = sanic == null;
  
    pythonImportsCheck = [ "sanic_testing" ];
  
    meta = with lib; {
  