{ lib, buildPythonPackage, fetchFromGitHub, # build-system cython, numpy, setuptools, # tests pytestCheckHook, scipy, }: buildPythonPackage rec { pname = "pesq"; version = "0.0.4"; pyproject = true; src = fetchFromGitHub { owner = "ludlows"; repo = "PESQ"; rev = "refs/tags/v${version}"; hash = "sha256-JuwZ+trFKGMetS3cC3pEQsV+wbj6+klFnC3THOd8bPE="; }; postPatch = # pythonRemoveDeps does not work for removing pytest-runner '' substituteInPlace setup.py \ --replace-fail ", 'pytest-runner'" "" '' # Flaky tests: numerical equality is not satisfied on ARM platforms + '' substituteInPlace tests/test_pesq.py \ --replace-fail \ "assert score == 1.6072081327438354" \ "assert abs(score - 1.6072081327438354) < 1e-5" \ --replace-fail \ "assert score == [1.6072081327438354]" \ "assert np.allclose(np.array(score), np.array([1.6072081327438354]))" ''; build-system = [ cython setuptools numpy ]; dependencies = [ numpy ]; pythonImportsCheck = [ "pesq" "pesq.cypesq" ]; # Prevents importing the `pesq` module from the source files (which lack the cypesq extension) preCheck = '' rm -rf pesq ''; nativeCheckInputs = [ pytestCheckHook scipy ]; meta = { description = "PESQ (Perceptual Evaluation of Speech Quality) Wrapper for Python Users"; homepage = "https://github.com/ludlows/PESQ"; changelog = "https://github.com/ludlows/PESQ/releases/tag/v${version}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ GaetanLepage ]; }; }