1{ lib, buildPythonPackage, fetchPypi, callPackage
2, isPy27, isPy34, pythonOlder
3, cleo
4, requests
5, cachy
6, requests-toolbelt
7, pyrsistent
8, pyparsing
9, cachecontrol
10, pkginfo
11, html5lib
12, shellingham
13, subprocess32
14, tomlkit
15, typing
16, pathlib2
17, virtualenv
18, functools32
19, clikit
20, keyring
21, pexpect
22, importlib-metadata
23, pytest
24, jsonschema
25, intreehooks
26, lockfile
27}:
28
29let
30 glob2 = callPackage ./glob2.nix { };
31
32in buildPythonPackage rec {
33 pname = "poetry";
34 version = "1.0.3";
35
36 src = fetchPypi {
37 inherit pname version;
38 sha256 = "0fx1ilgkrsqjjnpgv5zljsp0wpcsywdqvvi8im9z396qq6qpk830";
39 };
40
41 postPatch = ''
42 substituteInPlace pyproject.toml \
43 --replace "pyrsistent = \"^0.14.2\"" "pyrsistent = \"^0.15.0\"" \
44 --replace "requests-toolbelt = \"^0.8.0\"" "requests-toolbelt = \"^0.9.0\"" \
45 --replace "importlib-metadata = {version = \"~1.1.3\", python = \"<3.8\"}" \
46 "importlib-metadata = {version = \"~1.3.0\", python = \"<3.8\"}"
47 '';
48
49 format = "pyproject";
50
51 nativeBuildInputs = [ intreehooks ];
52
53 propagatedBuildInputs = [
54 cleo
55 clikit
56 requests
57 cachy
58 requests-toolbelt
59 jsonschema
60 pyrsistent
61 pyparsing
62 cachecontrol
63 pkginfo
64 html5lib
65 shellingham
66 tomlkit
67 pexpect
68 keyring
69 lockfile
70 ] ++ lib.optionals (isPy27 || isPy34) [ typing pathlib2 glob2 ]
71 ++ lib.optionals isPy27 [ virtualenv functools32 subprocess32 ]
72 ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
73
74 postInstall = ''
75 mkdir -p "$out/share/bash-completion/completions"
76 "$out/bin/poetry" completions bash > "$out/share/bash-completion/completions/poetry"
77 mkdir -p "$out/share/zsh/vendor-completions"
78 "$out/bin/poetry" completions zsh > "$out/share/zsh/vendor-completions/_poetry"
79 mkdir -p "$out/share/fish/vendor_completions.d"
80 "$out/bin/poetry" completions fish > "$out/share/fish/vendor_completions.d/poetry.fish"
81 '';
82
83 # No tests in Pypi tarball
84 doCheck = false;
85 checkInputs = [ pytest ];
86 checkPhase = ''
87 pytest tests
88 '';
89
90 meta = with lib; {
91 homepage = "https://python-poetry.org/";
92 description = "Python dependency management and packaging made easy";
93 license = licenses.mit;
94 maintainers = with maintainers; [ jakewaksbaum ];
95 };
96}