nixpkgs/pkgs/development/python-modules/poetry/default.nix
2020-03-02 10:30:50 -08:00

96 lines
2.2 KiB
Nix

{ lib, buildPythonPackage, fetchPypi, callPackage
, isPy27, isPy34, pythonOlder
, cleo
, requests
, cachy
, requests-toolbelt
, pyrsistent
, pyparsing
, cachecontrol
, pkginfo
, html5lib
, shellingham
, subprocess32
, tomlkit
, typing
, pathlib2
, virtualenv
, functools32
, clikit
, keyring
, pexpect
, importlib-metadata
, pytest
, jsonschema
, intreehooks
, lockfile
}:
let
glob2 = callPackage ./glob2.nix { };
in buildPythonPackage rec {
pname = "poetry";
version = "1.0.3";
format = "pyproject";
src = fetchPypi {
inherit pname version;
sha256 = "0fx1ilgkrsqjjnpgv5zljsp0wpcsywdqvvi8im9z396qq6qpk830";
};
postPatch = ''
substituteInPlace pyproject.toml \
--replace "pyrsistent = \"^0.14.2\"" "pyrsistent = \"^0.15.0\"" \
--replace "requests-toolbelt = \"^0.8.0\"" "requests-toolbelt = \"^0.9.0\"" \
--replace 'importlib-metadata = {version = "~1.1.3", python = "<3.8"}' \
'importlib-metadata = {version = ">=1.3,<2", python = "<3.8"}'
'';
nativeBuildInputs = [ intreehooks ];
propagatedBuildInputs = [
cleo
clikit
requests
cachy
requests-toolbelt
jsonschema
pyrsistent
pyparsing
cachecontrol
pkginfo
html5lib
shellingham
tomlkit
pexpect
keyring
lockfile
] ++ lib.optionals (isPy27 || isPy34) [ typing pathlib2 glob2 ]
++ lib.optionals isPy27 [ virtualenv functools32 subprocess32 ]
++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
postInstall = ''
mkdir -p "$out/share/bash-completion/completions"
"$out/bin/poetry" completions bash > "$out/share/bash-completion/completions/poetry"
mkdir -p "$out/share/zsh/vendor-completions"
"$out/bin/poetry" completions zsh > "$out/share/zsh/vendor-completions/_poetry"
mkdir -p "$out/share/fish/vendor_completions.d"
"$out/bin/poetry" completions fish > "$out/share/fish/vendor_completions.d/poetry.fish"
'';
# No tests in Pypi tarball
doCheck = false;
checkInputs = [ pytest ];
checkPhase = ''
pytest tests
'';
meta = with lib; {
homepage = "https://python-poetry.org/";
description = "Python dependency management and packaging made easy";
license = licenses.mit;
maintainers = with maintainers; [ jakewaksbaum ];
};
}