{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, accelerate, attrs, bitsandbytes, bentoml, cattrs, click-option-group, datasets, deepmerge, hatch-fancy-pypi-readme, hatch-vcs, hatchling, inflection, mypy-extensions, orjson, peft, pydantic, transformers, typing-extensions, }: buildPythonPackage rec { pname = "openllm-core"; version = "0.5.7"; pyproject = true; disabled = pythonOlder "3.8"; src = fetchFromGitHub { owner = "bentoml"; repo = "OpenLLM"; rev = "refs/tags/v${version}"; hash = "sha256-sEZLszzoo39WUnziHGp7zWNO0YaqkXeXAoIxvyhw42w="; }; sourceRoot = "${src.name}/openllm-core"; postPatch = '' substituteInPlace pyproject.toml \ --replace-fail "hatch-vcs==" "hatch-vcs>=" \ --replace-fail "hatchling==" "hatchling>=" \ --replace-fail "hatch-fancy-pypi-readme==" "hatch-fancy-pypi-readme>=" ''; pythonRelaxDeps = [ "cattrs" ]; build-system = [ hatch-fancy-pypi-readme hatch-vcs hatchling ]; dependencies = [ attrs cattrs pydantic # not listed in pyproject.toml, but required at runtime click-option-group deepmerge inflection mypy-extensions orjson typing-extensions ]; optional-dependencies = { vllm = [ # vllm ]; bentoml = [ bentoml ]; fine-tune = [ accelerate bitsandbytes datasets peft transformers # trl ] ++ transformers.optional-dependencies.torch ++ transformers.optional-dependencies.tokenizers; full = with optional-dependencies; ( vllm # use absolute path to disambiguate with derivbation argument ++ optional-dependencies.bentoml ++ fine-tune ); }; # there is no tests doCheck = false; pythonImportsCheck = [ "openllm_core" ]; meta = with lib; { description = "Core components for OpenLLM"; homepage = "https://github.com/bentoml/OpenLLM/tree/main/openllm-core"; changelog = "https://github.com/bentoml/OpenLLM/blob/${src.rev}/CHANGELOG.md"; license = licenses.asl20; maintainers = with maintainers; [ natsukium ]; }; }