about summary refs log tree commit diff
path: root/pkgs/development/python-modules/gruut/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/gruut/default.nix')
-rw-r--r--pkgs/development/python-modules/gruut/default.nix99
1 files changed, 63 insertions, 36 deletions
diff --git a/pkgs/development/python-modules/gruut/default.nix b/pkgs/development/python-modules/gruut/default.nix
index 8d18dee9cd8e6..e5ad36e1b19b5 100644
--- a/pkgs/development/python-modules/gruut/default.nix
+++ b/pkgs/development/python-modules/gruut/default.nix
@@ -1,22 +1,35 @@
-{ lib
-, buildPythonPackage
-, callPackage
-, fetchFromGitHub
-, babel
-, gruut-ipa
-, dateparser
-, jsonlines
-, num2words
-, python-crfsuite
-, python
-, networkx
-, glibcLocales
-, pytestCheckHook
+{
+  lib,
+  buildPythonPackage,
+  callPackage,
+  fetchFromGitHub,
+
+  # build-system
+  setuptools,
+
+  # dependencies
+  babel,
+  dateparser,
+  gruut-ipa,
+  jsonlines,
+  networkx,
+  num2words,
+  numpy,
+  python-crfsuite,
+
+  # optional dependencies
+  pydub,
+  rapidfuzz,
+
+  # checks
+  glibcLocales,
+  pytestCheckHook,
 }:
 
 let
   langPkgs = [
     "ar"
+    "ca"
     "cs"
     "de"
     "en"
@@ -34,36 +47,53 @@ let
 in
 buildPythonPackage rec {
   pname = "gruut";
-  version = "2.3.4";
-  format = "setuptools";
+  version = "2.4.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "rhasspy";
-    repo = pname;
+    repo = "gruut";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DD7gnvH9T2R6E19+exWE7Si+XEpfh0Iy5FYbycjgzgM=";
+    hash = "sha256-iwde6elsAbICZ+Rc7CPgcZTOux1hweVZc/gf4K+hP9M=";
   };
 
-  postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "gruut_lang_en~=2.0.0" "gruut_lang_en" \
-      --replace "jsonlines~=1.2.0" "jsonlines" \
-      --replace "networkx>=2.5.0,<3.0.0" "networkx"
-  '';
+  pythonRelaxDeps = true;
+
+  build-system = [ setuptools ];
 
-  propagatedBuildInputs = [
+  dependencies = [
     babel
+    dateparser
     gruut-ipa
     jsonlines
+    networkx
     num2words
+    numpy
     python-crfsuite
-    dateparser
-    networkx
-  ] ++ (map (lang: callPackage ./language-pack.nix {
-    inherit lang version format src;
-  }) langPkgs);
+  ] ++ optional-dependencies.en;
+
+  optional-dependencies =
+    {
+      train = [
+        pydub
+        rapidfuzz
+      ];
+    }
+    // lib.genAttrs langPkgs (lang: [
+      (callPackage ./language-pack.nix {
+        inherit
+          lang
+          version
+          src
+          build-system
+          ;
+      })
+    ]);
 
-  nativeCheckInputs = [ glibcLocales pytestCheckHook ];
+  nativeCheckInputs = [
+    glibcLocales
+    pytestCheckHook
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   disabledTests = [
     # https://github.com/rhasspy/gruut/issues/25
@@ -72,19 +102,16 @@ buildPythonPackage rec {
     # requires mishkal library
     "test_fa"
     "test_ar"
-    "test_lb"
   ];
 
   preCheck = ''
     export LC_ALL=en_US.utf-8
   '';
 
-  pythonImportsCheck = [
-    "gruut"
-  ];
+  pythonImportsCheck = [ "gruut" ];
 
   meta = with lib; {
-    description = "A tokenizer, text cleaner, and phonemizer for many human languages";
+    description = "Tokenizer, text cleaner, and phonemizer for many human languages";
     mainProgram = "gruut";
     homepage = "https://github.com/rhasspy/gruut";
     license = licenses.mit;