1{ lib
2, stdenv
3, blis
4, buildPythonPackage
5, callPackage
6, catalogue
7, cymem
8, fetchPypi
9, jinja2
10, jsonschema
11, langcodes
12, murmurhash
13, numpy
14, packaging
15, pathy
16, preshed
17, pydantic
18, pytest
19, python
20, pythonOlder
21, pythonRelaxDepsHook
22, requests
23, setuptools
24, spacy-legacy
25, spacy-loggers
26, srsly
27, thinc
28, tqdm
29, typer
30, typing-extensions
31, wasabi
32, weasel
33, writeScript
34, nix
35, git
36, nix-update
37}:
38
39buildPythonPackage rec {
40 pname = "spacy";
41 version = "3.7.2";
42 pyproject = true;
43
44 disabled = pythonOlder "3.7";
45
46 src = fetchPypi {
47 inherit pname version;
48 hash = "sha256-zt9JJ78NP+x3OmzkjV0skb2wL+08fV7Ae9uHPxEm8aA=";
49 };
50
51 pythonRelaxDeps = [
52 "typer"
53 ];
54
55 nativeBuildInputs = [
56 pythonRelaxDepsHook
57 ];
58
59 propagatedBuildInputs = [
60 blis
61 catalogue
62 cymem
63 jinja2
64 jsonschema
65 langcodes
66 murmurhash
67 numpy
68 packaging
69 pathy
70 preshed
71 pydantic
72 requests
73 setuptools
74 spacy-legacy
75 spacy-loggers
76 srsly
77 thinc
78 tqdm
79 typer
80 wasabi
81 weasel
82 ] ++ lib.optionals (pythonOlder "3.8") [
83 typing-extensions
84 ];
85
86 postPatch = ''
87 substituteInPlace setup.cfg \
88 --replace "thinc>=8.1.8,<8.2.0" "thinc>=8.1.8"
89 '';
90
91 nativeCheckInputs = [
92 pytest
93 ];
94
95 doCheck = false;
96
97 checkPhase = ''
98 ${python.interpreter} -m pytest spacy/tests --vectors --models --slow
99 '';
100
101 pythonImportsCheck = [
102 "spacy"
103 ];
104
105 passthru = {
106 updateScript = writeScript "update-spacy" ''
107 #!${stdenv.shell}
108 set -eou pipefail
109 PATH=${lib.makeBinPath [ nix git nix-update ]}
110
111 nix-update python3Packages.spacy
112
113 # update spacy models as well
114 echo | nix-shell maintainers/scripts/update.nix --argstr package python3Packages.spacy_models.en_core_web_sm
115 '';
116 tests.annotation = callPackage ./annotation-test { };
117 };
118
119 meta = with lib; {
120 description = "Industrial-strength Natural Language Processing (NLP)";
121 homepage = "https://github.com/explosion/spaCy";
122 changelog = "https://github.com/explosion/spaCy/releases/tag/v${version}";
123 license = licenses.mit;
124 maintainers = with maintainers; [ ];
125 };
126}