diff options
author | Aldo Borrero <82811+aldoborrero@users.noreply.github.com> | 2023-10-29 12:50:47 +0100 |
---|---|---|
committer | Jörg Thalheim <Mic92@users.noreply.github.com> | 2023-11-17 18:41:49 +0100 |
commit | c7eeda7413eabc79191719a97ec54601888009c8 (patch) | |
tree | fadef43824374e0850ba490cfc012d5bfe970344 /pkgs | |
parent | 65481ecfef4dda8f8248e0428ac8c41f66cb32fc (diff) |
python311Packages.llm: init at version 0.12
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch | 34 | ||||
-rw-r--r-- | pkgs/development/python-modules/llm/default.nix | 107 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 | ||||
-rw-r--r-- | pkgs/top-level/python-packages.nix | 2 |
4 files changed, 145 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch b/pkgs/development/python-modules/llm/001-disable-install-uninstall-commands.patch new file mode 100644 index 0000000000000..cef7fba13343e --- /dev/null +++ b/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/pkgs/development/python-modules/llm/default.nix b/pkgs/development/python-modules/llm/default.nix new file mode 100644 index 0000000000000..318f673533089 --- /dev/null +++ b/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 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0b48a1a3c71fe..0f319e308f9bb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9990,6 +9990,8 @@ with pkgs; lldpd = callPackage ../tools/networking/lldpd { }; + llm = with python3Packages; toPythonApplication llm; + lnav = callPackage ../tools/misc/lnav { }; lnch = callPackage ../tools/misc/lnch { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f21dc11dd49c0..0a2f0fea4627c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6390,6 +6390,8 @@ self: super: with self; { inherit (pkgs) fuse; }; + llm = callPackage ../development/python-modules/llm { }; + llvmlite = callPackage ../development/python-modules/llvmlite { # llvmlite always requires a specific version of llvm. llvm = pkgs.llvm_14; |