depot/third_party/nixpkgs/pkgs/development/python-modules/chromadb/default.nix

181 lines
3.3 KiB
Nix
Raw Normal View History

{
lib,
stdenv,
bcrypt,
build,
buildPythonPackage,
cargo,
chroma-hnswlib,
darwin,
fastapi,
fetchFromGitHub,
grpcio,
httpx,
hypothesis,
importlib-resources,
kubernetes,
mmh3,
nixosTests,
numpy,
onnxruntime,
openssl,
opentelemetry-api,
opentelemetry-exporter-otlp-proto-grpc,
opentelemetry-instrumentation-fastapi,
opentelemetry-sdk,
orjson,
overrides,
pkg-config,
posthog,
protobuf,
psutil,
pulsar-client,
pydantic,
pypika,
pytest-asyncio,
pytestCheckHook,
pythonOlder,
pyyaml,
requests,
rustc,
rustPlatform,
setuptools-scm,
setuptools,
tenacity,
tokenizers,
tqdm,
typer,
typing-extensions,
uvicorn,
zstd,
}:
buildPythonPackage rec {
pname = "chromadb";
version = "0.5.11";
pyproject = true;
disabled = pythonOlder "3.9";
src = fetchFromGitHub {
owner = "chroma-core";
repo = "chroma";
rev = "refs/tags/${version}";
hash = "sha256-qE8eX97khcQa2JS9ZuJ1j3/pduXcQGyuVyvsnvKaemo=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
inherit src;
name = "${pname}-${version}";
hash = "sha256-zciqOK5EkvxX3ctkGdkAppOQAW4CJ554PZsw2ctrdG0=";
};
pythonRelaxDeps = [
"chroma-hnswlib"
"orjson"
];
build-system = [
setuptools
setuptools-scm
];
nativeBuildInputs = [
cargo
pkg-config
protobuf
rustc
rustPlatform.cargoSetupHook
];
buildInputs = [
openssl
zstd
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.Security ];
dependencies = [
bcrypt
build
chroma-hnswlib
fastapi
grpcio
httpx
importlib-resources
kubernetes
mmh3
numpy
onnxruntime
opentelemetry-api
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
opentelemetry-sdk
orjson
overrides
posthog
pulsar-client
pydantic
pypika
pyyaml
requests
tenacity
tokenizers
tqdm
typer
typing-extensions
uvicorn
];
nativeCheckInputs = [
hypothesis
psutil
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "chromadb" ];
env = {
ZSTD_SYS_USE_PKG_CONFIG = true;
};
pytestFlagsArray = [ "-x" ];
preCheck = ''
(($(ulimit -n) < 1024)) && ulimit -n 1024
export HOME=$(mktemp -d)
'';
disabledTests = [
# Tests are laky / timing sensitive
"test_fastapi_server_token_authn_allows_when_it_should_allow"
"test_fastapi_server_token_authn_rejects_when_it_should_reject"
];
disabledTestPaths = [
# Tests require network access
"chromadb/test/auth/test_simple_rbac_authz.py"
"chromadb/test/db/test_system.py"
"chromadb/test/ef/test_default_ef.py"
"chromadb/test/property/"
"chromadb/test/property/test_cross_version_persist.py"
"chromadb/test/stress/"
"chromadb/test/test_api.py"
];
__darwinAllowLocalNetworking = true;
passthru.tests = {
inherit (nixosTests) chromadb;
};
meta = with lib; {
description = "AI-native open-source embedding database";
homepage = "https://github.com/chroma-core/chroma";
changelog = "https://github.com/chroma-core/chroma/releases/tag/${version}";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
mainProgram = "chroma";
broken = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64;
};
}