diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/llm')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch | 34 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/llm/default.nix | 107 |
2 files changed, 141 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch b/nixpkgs/pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch new file mode 100644 index 000000000000..cef7fba13343 --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch @@ -0,0 +1,34 @@ +diff --git a/llm/cli.py b/llm/cli.py +index af37feb..18b078a 100644 +--- a/llm/cli.py ++++ b/llm/cli.py +@@ -1014,18 +1014,7 @@ def templates_path(): + ) + def install(packages, upgrade, editable, force_reinstall, no_cache_dir): + """Install packages from PyPI into the same environment as LLM""" +- args = ["pip", "install"] +- if upgrade: +- args += ["--upgrade"] +- if editable: +- args += ["--editable", editable] +- if force_reinstall: +- args += ["--force-reinstall"] +- if no_cache_dir: +- args += ["--no-cache-dir"] +- args += list(packages) +- sys.argv = args +- run_module("pip", run_name="__main__") ++ click.echo("Install command has been disabled for Nix. If you want to install extra llm plugins, use llm.withPlugins([]) expression.") + + + @cli.command() +@@ -1033,8 +1022,7 @@ def install(packages, upgrade, editable, force_reinstall, no_cache_dir): + @click.option("-y", "--yes", is_flag=True, help="Don't ask for confirmation") + def uninstall(packages, yes): + """Uninstall Python packages from the LLM environment""" +- sys.argv = ["pip", "uninstall"] + list(packages) + (["-y"] if yes else []) +- run_module("pip", run_name="__main__") ++ click.echo("Uninstall command has been disabled for Nix. If you want to uninstall extra llm plugins, just remove them from llm.withPlugins([]) list expression.") + + + @cli.command() diff --git a/nixpkgs/pkgs/development/python-modules/llm/default.nix b/nixpkgs/pkgs/development/python-modules/llm/default.nix new file mode 100644 index 000000000000..318f67353308 --- /dev/null +++ b/nixpkgs/pkgs/development/python-modules/llm/default.nix @@ -0,0 +1,107 @@ +{ + buildPythonApplication, + buildPythonPackage, + fetchFromGitHub, + lib, + makeWrapper, + pytestCheckHook, + python3, + pythonOlder, + ruff, + setuptools, +}: let + llm = buildPythonPackage rec { + pname = "llm"; + version = "0.12"; + pyproject = true; + + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + owner = "simonw"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-aCqdw2co/cXrBwVY/k/aSLl3C22nlH5LvU2yir1/NnQ="; + }; + + patches = [ + ./001-disable-install-uninstall-commands.patch + ]; + + nativeBuildInputs = [ + setuptools + ]; + + propagatedBuildInputs = with python3.pkgs; [ + click-default-group + numpy + openai + pluggy + pydantic + python-ulid + pyyaml + setuptools # for pkg_resources + sqlite-migrate + sqlite-utils + ]; + + nativeCheckInputs = with python3.pkgs; [ + cogapp + numpy + pytestCheckHook + requests-mock + ]; + + doCheck = true; + + pytestFlagsArray = [ + "-svv" + "tests/" + ]; + + pythonImportsCheck = [ + "llm" + ]; + + passthru = {inherit withPlugins;}; + + meta = with lib; { + homepage = "https://github.com/simonw/llm"; + description = "Access large language models from the command-line"; + changelog = "https://github.com/simonw/llm/releases/tag/${version}"; + license = licenses.asl20; + mainProgram = "llm"; + maintainers = with maintainers; [aldoborrero]; + }; + }; + + withPlugins = plugins: buildPythonApplication { + inherit (llm) pname version; + format = "other"; + + disabled = pythonOlder "3.8"; + + dontUnpack = true; + dontBuild = true; + doCheck = false; + + nativeBuildInputs = [ + makeWrapper + ]; + + installPhase = '' + makeWrapper ${llm}/bin/llm $out/bin/llm \ + --prefix PYTHONPATH : "${llm}/${python3.sitePackages}:$PYTHONPATH" + ln -sfv ${llm}/lib $out/lib + ''; + + propagatedBuildInputs = llm.propagatedBuildInputs ++ plugins; + + passthru = llm.passthru // { + withPlugins = morePlugins: withPlugins (morePlugins ++ plugins); + }; + + inherit (llm) meta; + }; +in + llm |