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, writeScript
33, nix
34, git
35, nix-update
36}:
37
38buildPythonPackage rec {
39 pname = "spacy";
40 version = "3.5.4";
41 format = "setuptools";
42
43 disabled = pythonOlder "3.6";
44
45 src = fetchPypi {
46 inherit pname version;
47 hash = "sha256-mpwWfp3Ov++sx12sNKjnK+y+NI60W78GpsBSOuBaxCU=";
48 };
49
50 pythonRelaxDeps = [
51 "typer"
52 ];
53
54 nativeBuildInputs = [
55 pythonRelaxDepsHook
56 ];
57
58 propagatedBuildInputs = [
59 blis
60 catalogue
61 cymem
62 jinja2
63 jsonschema
64 langcodes
65 murmurhash
66 numpy
67 packaging
68 pathy
69 preshed
70 pydantic
71 requests
72 setuptools
73 spacy-legacy
74 spacy-loggers
75 srsly
76 thinc
77 tqdm
78 typer
79 wasabi
80 ] ++ lib.optionals (pythonOlder "3.8") [
81 typing-extensions
82 ]; postPatch = ''
83 substituteInPlace setup.cfg \
84 --replace "typer>=0.3.0,<0.5.0" "typer>=0.3.0"
85 '';
86
87 nativeCheckInputs = [
88 pytest
89 ];
90
91 doCheck = false;
92
93 checkPhase = ''
94 ${python.interpreter} -m pytest spacy/tests --vectors --models --slow
95 '';
96
97 pythonImportsCheck = [
98 "spacy"
99 ];
100
101 passthru = {
102 updateScript = writeScript "update-spacy" ''
103 #!${stdenv.shell}
104 set -eou pipefail
105 PATH=${lib.makeBinPath [ nix git nix-update ]}
106
107 nix-update python3Packages.spacy
108
109 # update spacy models as well
110 echo | nix-shell maintainers/scripts/update.nix --argstr package python3Packages.spacy_models.en_core_web_sm
111 '';
112 tests.annotation = callPackage ./annotation-test { };
113 };
114
115 meta = with lib; {
116 description = "Industrial-strength Natural Language Processing (NLP)";
117 homepage = "https://github.com/explosion/spaCy";
118 changelog = "https://github.com/explosion/spaCy/releases/tag/v${version}";
119 license = licenses.mit;
120 maintainers = with maintainers; [ ];
121 };
122}