1{
2 lib,
3 buildPythonPackage,
4 cliff,
5 fetchFromGitHub,
6 keystoneauth1,
7 openstacksdk,
8 oslo-i18n,
9 oslo-utils,
10 pbr,
11 requests,
12 requests-mock,
13 setuptools,
14 stdenv,
15 stestr,
16 stevedore,
17}:
18
19buildPythonPackage rec {
20 pname = "osc-lib";
21 version = "4.2.0";
22 pyproject = true;
23
24 src = fetchFromGitHub {
25 owner = "openstack";
26 repo = "osc-lib";
27 tag = version;
28 hash = "sha256-5WoYamGRLz3fjebel1yxg39YGAK9ZfMbTXG6IXPnJYo=";
29 };
30
31 postPatch = ''
32 # TODO: somehow bring this to upstreams attention
33 substituteInPlace pyproject.toml \
34 --replace-fail '"osc_lib"' '"osc_lib", "osc_lib.api", "osc_lib.cli", "osc_lib.command", "osc_lib.tests", "osc_lib.tests.api", "osc_lib.tests.cli", "osc_lib.tests.command", "osc_lib.tests.utils", "osc_lib.utils"'
35 '';
36
37 env.PBR_VERSION = version;
38
39 build-system = [
40 pbr
41 setuptools
42 ];
43
44 dependencies = [
45 cliff
46 keystoneauth1
47 openstacksdk
48 oslo-i18n
49 oslo-utils
50 requests
51 stevedore
52 ];
53
54 nativeCheckInputs = [
55 requests-mock
56 stestr
57 ];
58
59 checkPhase = ''
60 stestr run -e <(echo "
61 ${lib.optionalString stdenv.hostPlatform.isDarwin ''
62 osc_lib.tests.test_shell.TestShellCli.test_shell_args_cloud_public
63 osc_lib.tests.test_shell.TestShellCli.test_shell_args_precedence
64 osc_lib.tests.test_shell.TestShellCliPrecedence.test_shell_args_precedence_1
65 osc_lib.tests.test_shell.TestShellCliPrecedence.test_shell_args_precedence_2
66 ''}")
67 '';
68
69 pythonImportsCheck = [ "osc_lib" ];
70
71 meta = with lib; {
72 description = "OpenStackClient Library";
73 homepage = "https://github.com/openstack/osc-lib";
74 license = licenses.asl20;
75 teams = [ teams.openstack ];
76 };
77}