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