{ stdenv
, buildPythonPackage
, fetchPypi
, lib
, python
, serpent
, dill
, cloudpickle
, msgpack
, isPy27
, selectors34
, pytestCheckHook
}:

buildPythonPackage rec {
  pname = "Pyro4";
  version = "4.80";

  src = fetchPypi {
    inherit pname version;
    sha256 = "46847ca703de3f483fbd0b2d22622f36eff03e6ef7ec7704d4ecaa3964cb2220";
  };

  propagatedBuildInputs = [
    serpent
  ] ++ lib.optionals isPy27 [ selectors34 ];

  buildInputs = [
    dill
    cloudpickle
    msgpack
  ];

  checkInputs = [ pytestCheckHook ];

  # add testsupport.py to PATH
  preCheck = "PYTHONPATH=tests/PyroTests:$PYTHONPATH";

  # ignore network related tests, which fail in sandbox
  pytestFlagsArray = [ "--ignore=tests/PyroTests/test_naming.py" ]
    # test hangs on darwin with sandbox enabled
    ++ lib.optionals stdenv.isDarwin [ "--ignore=tests/PyroTests/test_daemon.py" ];

  disabledTests = [
    "StartNSfunc"
    "Broadcast"
    "GetIP"
  ];

  meta = with stdenv.lib; {
    description = "Distributed object middleware for Python (RPC)";
    homepage = "https://github.com/irmen/Pyro4";
    license = licenses.mit;
    maintainers = with maintainers; [ prusnak ];
  };
}

{ stdenv
, buildPythonPackage
, fetchPypi
, lib
, python
, serpent
, dill
, cloudpickle
, msgpack
, isPy27
, selectors34
, pytestCheckHook
}:

buildPythonPackage rec {
  pname = "Pyro4";
  version = "4.80";

  src = fetchPypi {
    inherit pname version;
    sha256 = "46847ca703de3f483fbd0b2d22622f36eff03e6ef7ec7704d4ecaa3964cb2220";
  };

  propagatedBuildInputs = [
    serpent
  ] ++ lib.optionals isPy27 [ selectors34 ];

  buildInputs = [
    dill
    cloudpickle
    msgpack
  ];

  checkInputs = [ pytestCheckHook ];

  # add testsupport.py to PATH
  preCheck = "PYTHONPATH=tests/PyroTests:$PYTHONPATH";

  # ignore network related tests, which fail in sandbox
  pytestFlagsArray = [ "--ignore=tests/PyroTests/test_naming.py" ];

  disabledTests = [
    "StartNSfunc"
    "Broadcast"
    "GetIP"
  ];

  # otherwise the tests hang the build
  __darwinAllowLocalNetworking = true;

  meta = with stdenv.lib; {
    description = "Distributed object middleware for Python (RPC)";
    homepage = "https://github.com/irmen/Pyro4";
    license = licenses.mit;
    maintainers = with maintainers; [ prusnak ];
  };
}

Fix hanging tests on darwin
pythonPackages.Pyro4: Fix hanging tests on darwin
