diff options
Diffstat (limited to 'pkgs/by-name/op/openapi-python-client/package.nix')
-rw-r--r-- | pkgs/by-name/op/openapi-python-client/package.nix | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/pkgs/by-name/op/openapi-python-client/package.nix b/pkgs/by-name/op/openapi-python-client/package.nix new file mode 100644 index 000000000000..171434d7a30b --- /dev/null +++ b/pkgs/by-name/op/openapi-python-client/package.nix @@ -0,0 +1,80 @@ +{ + lib, + stdenv, + darwin, + python3Packages, + fetchFromGitHub, + installShellFiles, + testers, + openapi-python-client, +}: + +python3Packages.buildPythonApplication rec { + pname = "openapi-python-client"; + version = "0.21.6"; + pyproject = true; + + src = fetchFromGitHub { + inherit version; + owner = "openapi-generators"; + repo = "openapi-python-client"; + rev = "refs/tags/v${version}"; + hash = "sha256-hmVRPQ3+20ZBRCkQltX+S+pGGy2unsBSztyif93sKsw="; + }; + + nativeBuildInputs = + [ + installShellFiles + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + darwin.ps + ]; + + build-system = with python3Packages; [ + hatchling + ]; + + dependencies = ( + with python3Packages; + [ + attrs + httpx + jinja2 + pydantic + python-dateutil + ruamel-yaml + ruff + shellingham + typer + typing-extensions + ] + ); + # openapi-python-client defines upper bounds to the dependencies, ruff python library is + # just a simple wrapper to locate the binary. We'll remove the upper bound + pythonRelaxDeps = [ "ruff" ]; + + postInstall = '' + # see: https://github.com/fastapi/typer/blob/5889cf82f4ed925f92e6b0750bf1b1ed9ee672f3/typer/completion.py#L54 + # otherwise shellingham throws exception on darwin + export _TYPER_COMPLETE_TEST_DISABLE_SHELL_DETECTION=1 + installShellCompletion --cmd openapi-python-client \ + --bash <($out/bin/openapi-python-client --show-completion bash) \ + --fish <($out/bin/openapi-python-client --show-completion fish) \ + --zsh <($out/bin/openapi-python-client --show-completion zsh) + ''; + + passthru = { + tests.version = testers.testVersion { + package = openapi-python-client; + }; + }; + + meta = { + description = "Generate modern Python clients from OpenAPI"; + homepage = "https://github.com/openapi-generators/openapi-python-client"; + changelog = "https://github.com/openapi-generators/openapi-python-client/releases/tag/v${version}"; + license = lib.licenses.mit; + mainProgram = "openapi-python-client"; + maintainers = with lib.maintainers; [ konradmalik ]; + }; +} |