199 lines
4.2 KiB
Nix
199 lines
4.2 KiB
Nix
|
{ lib
|
||
|
, buildPythonPackage
|
||
|
, fetchFromGitHub
|
||
|
, hatchling
|
||
|
, hatch-vcs
|
||
|
, aiohttp
|
||
|
, attrs
|
||
|
, cattrs
|
||
|
, circus
|
||
|
, click
|
||
|
, click-option-group
|
||
|
, cloudpickle
|
||
|
, deepmerge
|
||
|
, fs
|
||
|
, jinja2
|
||
|
, numpy
|
||
|
, opentelemetry-api
|
||
|
, opentelemetry-instrumentation
|
||
|
, opentelemetry-instrumentation-aiohttp-client
|
||
|
, opentelemetry-instrumentation-asgi
|
||
|
, opentelemetry-sdk
|
||
|
, opentelemetry-semantic-conventions
|
||
|
, opentelemetry-util-http
|
||
|
, packaging
|
||
|
, pathspec
|
||
|
, pip-requirements-parser
|
||
|
, pip-tools
|
||
|
, prometheus-client
|
||
|
, psutil
|
||
|
, pynvml
|
||
|
, python-dateutil
|
||
|
, python-json-logger
|
||
|
, python-multipart
|
||
|
, pyyaml
|
||
|
, requests
|
||
|
, rich
|
||
|
, schema
|
||
|
, simple-di
|
||
|
, starlette
|
||
|
, uvicorn
|
||
|
, watchfiles
|
||
|
, fs-s3fs
|
||
|
, grpcio
|
||
|
, grpcio-health-checking
|
||
|
, opentelemetry-instrumentation-grpc
|
||
|
, protobuf
|
||
|
, grpcio-channelz
|
||
|
, grpcio-reflection
|
||
|
, filetype
|
||
|
, pillow
|
||
|
, pydantic
|
||
|
, pandas
|
||
|
, pyarrow
|
||
|
, opentelemetry-exporter-otlp-proto-http
|
||
|
# https://pypi.org/project/opentelemetry-exporter-jaeger-proto-grpc/
|
||
|
# , opentelemetry-exporter-jaeger # support for this exporter ends in july 2023
|
||
|
, opentelemetry-exporter-otlp
|
||
|
# , opentelemetry-exporter-zipkin
|
||
|
, tritonclient
|
||
|
# native check inputs
|
||
|
, pytestCheckHook
|
||
|
, scikit-learn
|
||
|
, lxml
|
||
|
, orjson
|
||
|
, pytest-asyncio
|
||
|
, fastapi
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
version = "1.1.1";
|
||
|
aws = [ fs-s3fs ];
|
||
|
grpc = [
|
||
|
grpcio
|
||
|
grpcio-health-checking
|
||
|
opentelemetry-instrumentation-grpc
|
||
|
protobuf
|
||
|
];
|
||
|
io-file = [ filetype ];
|
||
|
io-image = io-file ++ [ pillow ];
|
||
|
io-json = [ pydantic ];
|
||
|
io-pandas = [ pandas pyarrow ];
|
||
|
grpc-reflection = grpc ++ [ grpcio-reflection ];
|
||
|
grpc-channelz = grpc ++ [ grpcio-channelz ];
|
||
|
monitor-otlp = [ opentelemetry-exporter-otlp-proto-http ];
|
||
|
# tracing-jaeger = [ opentelemetry-exporter-jaeger ];
|
||
|
tracing-otlp = [ opentelemetry-exporter-otlp ];
|
||
|
# tracing-zipkin = [ opentelemetry-exporter-zipkin ];
|
||
|
io = io-json ++ io-image ++ io-pandas ++ io-file;
|
||
|
tracing = tracing-otlp; # ++ tracing-zipkin ++ tracing-jaeger
|
||
|
optional-dependencies = {
|
||
|
all = aws ++ io ++ grpc ++ grpc-reflection ++ grpc-channelz ++ tracing ++ monitor-otlp;
|
||
|
inherit aws grpc io-file io-image io-json io-pandas io grpc-reflection
|
||
|
grpc-channelz monitor-otlp tracing-otlp tracing;
|
||
|
triton = [ tritonclient ] ++ tritonclient.optional-dependencies.http ++ tritonclient.optional-dependencies.grpc;
|
||
|
};
|
||
|
in
|
||
|
buildPythonPackage {
|
||
|
pname = "bentoml";
|
||
|
inherit version;
|
||
|
format = "pyproject";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "bentoml";
|
||
|
repo = "BentoML";
|
||
|
rev = "v${version}";
|
||
|
hash = "sha256-V5lquPZT7XBnRdPIEfgbxIBHX+i4N081SYQVK0CkSo8=";
|
||
|
};
|
||
|
|
||
|
pythonRelaxDeps = [
|
||
|
"opentelemetry-semantic-conventions"
|
||
|
];
|
||
|
|
||
|
nativeBuildInputs = [
|
||
|
hatchling
|
||
|
hatch-vcs
|
||
|
];
|
||
|
|
||
|
propagatedBuildInputs = [
|
||
|
aiohttp
|
||
|
attrs
|
||
|
cattrs
|
||
|
circus
|
||
|
click
|
||
|
click-option-group
|
||
|
cloudpickle
|
||
|
deepmerge
|
||
|
fs
|
||
|
jinja2
|
||
|
numpy
|
||
|
opentelemetry-api
|
||
|
opentelemetry-instrumentation
|
||
|
opentelemetry-instrumentation-aiohttp-client
|
||
|
opentelemetry-instrumentation-asgi
|
||
|
opentelemetry-sdk
|
||
|
opentelemetry-semantic-conventions
|
||
|
opentelemetry-util-http
|
||
|
packaging
|
||
|
pathspec
|
||
|
pip-requirements-parser
|
||
|
pip-tools
|
||
|
prometheus-client
|
||
|
psutil
|
||
|
pynvml
|
||
|
python-dateutil
|
||
|
python-json-logger
|
||
|
python-multipart
|
||
|
pyyaml
|
||
|
requests
|
||
|
rich
|
||
|
schema
|
||
|
simple-di
|
||
|
starlette
|
||
|
uvicorn
|
||
|
watchfiles
|
||
|
];
|
||
|
|
||
|
passthru.optional-dependencies = optional-dependencies;
|
||
|
|
||
|
pythonImportsCheck = [ "bentoml" ];
|
||
|
|
||
|
preCheck = ''
|
||
|
# required for CI testing
|
||
|
# https://github.com/bentoml/BentoML/pull/4056/commits/66302b502a3f4df4e8e6643d2afefefca974073e
|
||
|
export GITHUB_ACTIONS=1
|
||
|
'';
|
||
|
|
||
|
disabledTestPaths = [
|
||
|
"tests/e2e"
|
||
|
"tests/integration"
|
||
|
];
|
||
|
|
||
|
disabledTests = [
|
||
|
# flaky test
|
||
|
"test_store"
|
||
|
];
|
||
|
|
||
|
nativeCheckInputs = [
|
||
|
pytestCheckHook
|
||
|
pandas
|
||
|
pydantic
|
||
|
scikit-learn
|
||
|
lxml
|
||
|
orjson
|
||
|
pytest-asyncio
|
||
|
pillow
|
||
|
fastapi
|
||
|
starlette
|
||
|
] ++ optional-dependencies.grpc;
|
||
|
|
||
|
|
||
|
meta = with lib; {
|
||
|
description = "Build Production-Grade AI Applications";
|
||
|
homepage = "https://github.com/bentoml/BentoML";
|
||
|
changelog = "https://github.com/bentoml/BentoML/releases/tag/v${version}";
|
||
|
license = licenses.asl20;
|
||
|
maintainers = with maintainers; [ happysalada natsukium ];
|
||
|
};
|
||
|
}
|