diff --git a/pkgs/development/python-modules/pyannote-audio/default.nix b/pkgs/development/python-modules/pyannote-audio/default.nix index 49e58b4a2708..ea4a25888d37 100644 --- a/pkgs/development/python-modules/pyannote-audio/default.nix +++ b/pkgs/development/python-modules/pyannote-audio/default.nix @@ -1,42 +1,50 @@ { lib, + stdenv, buildPythonPackage, fetchFromGitHub, # build-system - pyscaffold, - setuptools, + hatchling, + hatch-vcs, # dependencies asteroid-filterbanks, einops, huggingface-hub, - numpy, - omegaconf, + lightning, + matplotlib, + opentelemetry-api, + opentelemetry-exporter-otlp, + opentelemetry-sdk, pyannote-core, pyannote-database, pyannote-metrics, pyannote-pipeline, - pytorch-lightning, + pyannoteai-sdk, pytorch-metric-learning, - rich, - semver, + safetensors, soundfile, speechbrain, tensorboardx, torch, torch-audiomentations, torchaudio, + torchcodec, torchmetrics, # optional-dependencies hydra-core, typer, + + # tests + papermill, + pytestCheckHook, }: buildPythonPackage rec { pname = "pyannote-audio"; - version = "3.4.0"; + version = "4.0.1"; pyproject = true; src = fetchFromGitHub { @@ -44,19 +52,12 @@ buildPythonPackage rec { repo = "pyannote-audio"; tag = version; fetchSubmodules = true; - hash = "sha256-NnwJJasObePBYWBnuVzOLFz2eqOHoOA6W5CzAEpkDV4="; + hash = "sha256-hYrwpph+Powt+AuQjKo0kkBW+5jJGfzGTILzL9j22YI="; }; - postPatch = '' - substituteInPlace setup.cfg \ - --replace-fail "pyscaffold>=3.2a0,<3.3a0" "pyscaffold" - substituteInPlace requirements.txt \ - --replace-fail "lightning" "pytorch-lightning" - ''; - build-system = [ - pyscaffold - setuptools + hatchling + hatch-vcs ]; pythonRelaxDeps = [ @@ -66,22 +67,25 @@ buildPythonPackage rec { asteroid-filterbanks einops huggingface-hub - numpy - omegaconf + lightning + matplotlib + opentelemetry-api + opentelemetry-exporter-otlp + opentelemetry-sdk pyannote-core pyannote-database pyannote-metrics pyannote-pipeline - pytorch-lightning + pyannoteai-sdk pytorch-metric-learning - rich - semver + safetensors soundfile speechbrain tensorboardx torch torch-audiomentations torchaudio + torchcodec torchmetrics ]; @@ -94,6 +98,37 @@ buildPythonPackage rec { pythonImportsCheck = [ "pyannote.audio" ]; + nativeCheckInputs = [ + papermill + pytestCheckHook + ]; + + preCheck = '' + $out/bin/pyannote-audio --help + ''; + + disabledTests = [ + # Require internet access + "test_hf_download_inference" + "test_hf_download_model" + "test_import_speechbrain_encoder_classifier" + "test_skip_aggregation" + "test_unknown_specifications_error_raised_on_non_setup_model_task" + + # AttributeError: module 'torchaudio' has no attribute 'info' + # Removed in torchaudio v2.9.0 + # See https://github.com/pytorch/audio/issues/3902 for context + "test_audio_resample" + ]; + + disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [ + # Crashes the interpreter + # - On aarch64-darwin: Trace/BPT trap: 5 + # - On x86_64-darwin: Fatal Python error: Illegal instruction + "tests/inference_test.py" + "tests/test_train.py" + ]; + meta = { description = "Neural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding"; homepage = "https://github.com/pyannote/pyannote-audio";