at 22.05-pre 1.6 kB view raw
1{ lib 2, buildPythonPackage 3, fetchurl 4, jieba 5, pymorphy2 6, sentencepiece 7, spacy 8, spacy-pkuseg 9, spacy-transformers }: 10let 11 buildModelPackage = { pname, version, sha256, license }: 12 let 13 lang = builtins.substring 0 2 pname; 14 in buildPythonPackage { 15 inherit pname version; 16 17 src = fetchurl { 18 url = "https://github.com/explosion/spacy-models/releases/download/${pname}-${version}/${pname}-${version}.tar.gz"; 19 inherit sha256; 20 }; 21 22 propagatedBuildInputs = [ spacy ] 23 ++ lib.optionals (lang == "zh") [ jieba spacy-pkuseg ] 24 ++ lib.optionals (lib.hasSuffix "_trf" pname) [ spacy-transformers ] 25 ++ lib.optionals (lang == "ru") [ pymorphy2 ] 26 ++ lib.optionals (pname == "fr_dep_news_trf") [ sentencepiece ]; 27 28 postPatch = lib.optionalString (pname == "fr_dep_news_trf") '' 29 substituteInPlace meta.json \ 30 --replace "sentencepiece==0.1.91" "sentencepiece>=0.1.91" 31 ''; 32 33 pythonImportsCheck = [ pname ]; 34 35 meta = with lib; { 36 description = "Models for the spaCy NLP library"; 37 homepage = "https://github.com/explosion/spacy-models"; 38 license = licenses.${license}; 39 maintainers = with maintainers; [ rvl ]; 40 }; 41 }; 42 43 makeModelSet = models: with lib; listToAttrs (map (m: nameValuePair m.pname (buildModelPackage m)) models); 44 45in makeModelSet (lib.importJSON ./models.json) 46 47# cat models.json | jq -r '.[] | @uri "https://github.com/explosion/spacy-models/releases/download/\(.pname)-\(.version)/\(.pname)-\(.version).tar.gz"' | xargs -n1 nix-prefetch-url