1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
{ lib
, stdenv
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, installShellFiles
, build
, cachecontrol
, cleo
, crashtest
, dulwich
, fastjsonschema
, installer
, keyring
, packaging
, pexpect
, pkginfo
, platformdirs
, poetry-core
, poetry-plugin-export
, pyproject-hooks
, requests
, requests-toolbelt
, shellingham
, tomlkit
, trove-classifiers
, virtualenv
, xattr
, tomli
, importlib-metadata
, deepdiff
, pytestCheckHook
, httpretty
, pytest-mock
, pytest-xdist
, darwin
}:
buildPythonPackage rec {
pname = "poetry";
version = "1.8.3";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "python-poetry";
repo = "poetry";
rev = "refs/tags/${version}";
hash = "sha256-PPHt9GG5XJzrhnuAS8L+0Pa3El3RNCdEbXbLnHopDWg=";
};
nativeBuildInputs = [
installShellFiles
];
propagatedBuildInputs = [
build
cachecontrol
cleo
crashtest
dulwich
fastjsonschema
installer
keyring
packaging
pexpect
pkginfo
platformdirs
poetry-core
poetry-plugin-export
pyproject-hooks
requests
requests-toolbelt
shellingham
tomlkit
trove-classifiers
virtualenv
] ++ lib.optionals (stdenv.isDarwin) [
xattr
] ++ lib.optionals (pythonOlder "3.11") [
tomli
] ++ lib.optionals (pythonOlder "3.10") [
importlib-metadata
] ++ cachecontrol.optional-dependencies.filecache;
postInstall = ''
installShellCompletion --cmd poetry \
--bash <($out/bin/poetry completions bash) \
--fish <($out/bin/poetry completions fish) \
--zsh <($out/bin/poetry completions zsh) \
'';
nativeCheckInputs = [
deepdiff
pytestCheckHook
httpretty
pytest-mock
pytest-xdist
] ++ lib.optionals stdenv.isDarwin [
darwin.ps
];
preCheck = (''
export HOME=$TMPDIR
'' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
# https://github.com/python/cpython/issues/74570#issuecomment-1093748531
export no_proxy='*';
'');
postCheck = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
unset no_proxy
'';
disabledTests = [
"test_builder_should_execute_build_scripts"
"test_env_system_packages_are_relative_to_lib"
"test_executor_known_hashes"
"test_install_warning_corrupt_root"
];
pytestFlagsArray = [
"-m 'not network'"
];
# Allow for package to use pep420's native namespaces
pythonNamespaces = [
"poetry"
];
# Unset ambient PYTHONPATH in the wrapper, so Poetry only ever runs with its own,
# isolated set of dependencies. This works because the correct PYTHONPATH is set
# in the Python script, which runs after the wrapper.
makeWrapperArgs = ["--unset PYTHONPATH"];
meta = with lib; {
changelog = "https://github.com/python-poetry/poetry/blob/${src.rev}/CHANGELOG.md";
homepage = "https://python-poetry.org/";
description = "Python dependency management and packaging made easy";
license = licenses.mit;
maintainers = with maintainers; [ jakewaksbaum dotlambda ];
mainProgram = "poetry";
};
}
|