1{
2 lib,
3 aiofiles,
4 aiosqlite,
5 alembic,
6 asyncpg,
7 backoff,
8 brotli-asgi,
9 buildPythonPackage,
10 cleanlab,
11 datasets,
12 elasticsearch8,
13 evaluate,
14 factory-boy,
15 faiss,
16 fastapi,
17 fetchFromGitHub,
18 flyingsquid,
19 greenlet,
20 httpx,
21 huggingface-hub,
22 luqum,
23 monotonic,
24 numpy,
25 openai,
26 opensearch-py,
27 packaging,
28 pandas,
29 passlib,
30 pdm-backend,
31 peft,
32 pgmpy,
33 pillow,
34 plotly,
35 prodict,
36 psutil,
37 psycopg2,
38 pydantic,
39 pytest-asyncio,
40 pytest-mock,
41 pytestCheckHook,
42 python-jose,
43 python-multipart,
44 pythonOlder,
45 pyyaml,
46 rich,
47 schedule,
48 scikit-learn,
49 sentence-transformers,
50 seqeval,
51 smart-open,
52 snorkel,
53 spacy-transformers,
54 spacy,
55 sqlalchemy,
56 standardwebhooks,
57 tqdm,
58 transformers,
59 typer,
60 uvicorn,
61 wrapt,
62# , flair
63# , setfit
64# , spacy-huggingface-hub
65# , span_marker
66# , trl
67}:
68
69buildPythonPackage rec {
70 pname = "argilla";
71 version = "2.8.0";
72 pyproject = true;
73
74 disabled = pythonOlder "3.9";
75
76 src = fetchFromGitHub {
77 owner = "argilla-io";
78 repo = "argilla";
79 tag = "v${version}";
80 hash = "sha256-8j7/Gtn4FnAZA3oIV7dLxKwNtigqB7AweHtQ/kzLwm4=";
81 };
82
83 sourceRoot = "${src.name}/${pname}";
84
85 pythonRelaxDeps = [
86 "httpx"
87 "numpy"
88 "rich"
89 "typer"
90 "wrapt"
91 ];
92
93 build-system = [ pdm-backend ];
94
95 dependencies = [
96 httpx
97 datasets
98 packaging
99 pandas
100 pydantic
101 wrapt
102 numpy
103 tqdm
104 pillow
105 huggingface-hub
106 monotonic
107 rich
108 typer
109 standardwebhooks
110 ];
111
112 optional-dependencies = {
113 server =
114 [
115 aiofiles
116 aiosqlite
117 alembic
118 backoff
119 brotli-asgi
120 elasticsearch8
121 fastapi
122 greenlet
123 luqum
124 opensearch-py
125 passlib
126 psutil
127 python-jose
128 python-multipart
129 pyyaml
130 scikit-learn
131 smart-open
132 sqlalchemy
133 uvicorn
134 ]
135 ++ elasticsearch8.optional-dependencies.async
136 ++ uvicorn.optional-dependencies.standard
137 ++ python-jose.optional-dependencies.cryptography
138 ++ passlib.optional-dependencies.bcrypt;
139 postgresql = [
140 asyncpg
141 psycopg2
142 ];
143 listeners = [
144 schedule
145 prodict
146 ];
147 integrations = [
148 cleanlab
149 evaluate
150 faiss
151 flyingsquid
152 openai
153 peft
154 pgmpy
155 plotly
156 pyyaml
157 sentence-transformers
158 seqeval
159 snorkel
160 spacy
161 spacy-transformers
162 transformers
163 # flair
164 # setfit
165 # span_marker
166 # trl
167 # spacy-huggingface-hub
168 ] ++ transformers.optional-dependencies.torch;
169 };
170
171 # Still quite a bit of optional dependencies missing
172 doCheck = false;
173
174 preCheck = ''
175 export HOME=$(mktemp -d)
176 '';
177
178 nativeCheckInputs = [
179 pytestCheckHook
180 pytest-mock
181 pytest-asyncio
182 factory-boy
183 ] ++ lib.flatten (builtins.attrValues optional-dependencies);
184
185 disabledTestPaths = [ "tests/server/datasets/test_dao.py" ];
186
187 meta = with lib; {
188 description = "Open-source data curation platform for LLMs";
189 homepage = "https://github.com/argilla-io/argilla";
190 changelog = "https://github.com/argilla-io/argilla/releases/tag/${src.tag}";
191 license = licenses.asl20;
192 maintainers = with maintainers; [ happysalada ];
193 mainProgram = "argilla";
194 };
195}