nixpkgs/pkgs/development/python-modules/argilla/default.nix
2024-03-22 14:23:24 +00:00

189 lines
3.2 KiB
Nix

{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, pythonRelaxDepsHook
, deprecated
, rich
, backoff
, packaging
, pydantic
, typer
, tqdm
, wrapt
, numpy
, httpx
, pandas
, monotonic
# optional-dependencies
, fastapi
, opensearch-py
, elasticsearch8
, uvicorn
, smart-open
, brotli-asgi
, alembic
, sqlalchemy
, greenlet
, aiosqlite
, luqum
, scikit-learn
, aiofiles
, pyyaml
, python-multipart
, python-jose
, passlib
, psutil
# , segment-analytics-python
, asyncpg
, psycopg2
, schedule
, prodict
, cleanlab
, datasets
, huggingface-hub
# , flair
, faiss
, flyingsquid
, pgmpy
, plotly
, snorkel
, spacy
, transformers
, evaluate
, seqeval
# , setfit
# , span_marker
, openai
, peft
# test dependencies
, pytestCheckHook
, pytest-cov
, pytest-mock
, pytest-asyncio
, factory-boy
}:
let
pname = "argilla";
version = "1.26.0";
optional-dependencies = {
server = [
fastapi
opensearch-py
elasticsearch8
uvicorn
smart-open
brotli-asgi
alembic
sqlalchemy
greenlet
aiosqlite
luqum
scikit-learn
aiofiles
pyyaml
python-multipart
python-jose
passlib
psutil
# segment-analytics-python
] ++
elasticsearch8.optional-dependencies.async ++
uvicorn.optional-dependencies.standard ++
python-jose.optional-dependencies.cryptography ++
passlib.optional-dependencies.bcrypt;
postgresql = [ asyncpg psycopg2 ];
listeners = [ schedule prodict ];
integrations = [
pyyaml
cleanlab
datasets
huggingface-hub
# flair
faiss
flyingsquid
pgmpy
plotly
snorkel
spacy
transformers
evaluate
seqeval
# setfit
# span_marker
openai
peft
] ++ transformers.optional-dependencies.torch;
};
in
buildPythonPackage {
inherit pname version;
format = "setuptools";
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "argilla-io";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-+8oN3afbpBQU2tRb2Oq12IlmoCg4O1LUHtt4hl2FOEI=";
};
pythonRelaxDeps = [
"typer"
"rich"
"numpy"
];
nativeBuildInputs = [
pythonRelaxDepsHook
];
propagatedBuildInputs = [
httpx
deprecated
packaging
pandas
pydantic
wrapt
numpy
tqdm
backoff
monotonic
rich
typer
];
# still quite a bit of optional dependencies missing
doCheck = false;
preCheck = ''
export HOME=$(mktemp -d)
'';
nativeCheckInputs = [
pytestCheckHook
pytest-cov
pytest-mock
pytest-asyncio
factory-boy
]
++ optional-dependencies.server
++ optional-dependencies.postgresql
++ optional-dependencies.listeners
++ optional-dependencies.integrations;
pytestFlagsArray = [ "--ignore=tests/server/datasets/test_dao.py" ];
passthru.optional-dependencies = optional-dependencies;
meta = with lib; {
description = "Argilla: the open-source data curation platform for LLMs";
mainProgram = "argilla";
homepage = "https://github.com/argilla-io/argilla";
changelog = "https://github.com/argilla-io/argilla/releases/tag/v${version}";
license = licenses.asl20;
maintainers = with maintainers; [ happysalada ];
};
}