1{
2 lib,
3 buildPythonPackage,
4 callPackage,
5 fetchPypi,
6 platformdirs,
7 cryptography,
8 dogpile-cache,
9 jmespath,
10 jsonpatch,
11 keystoneauth1,
12 munch,
13 openstackdocstheme,
14 os-service-types,
15 pbr,
16 psutil,
17 pyyaml,
18 requestsexceptions,
19 setuptools,
20 sphinxHook,
21}:
22
23buildPythonPackage rec {
24 pname = "openstacksdk";
25 version = "4.7.1";
26 pyproject = true;
27
28 outputs = [
29 "out"
30 "man"
31 ];
32
33 src = fetchPypi {
34 inherit pname version;
35 hash = "sha256-IzSKppxsxsHtDo8D+0KxVlGe2M/NFD54PvXB3YAK2fE=";
36 };
37
38 postPatch = ''
39 # Disable rsvgconverter not needed to build manpage
40 substituteInPlace doc/source/conf.py \
41 --replace-fail "'sphinxcontrib.rsvgconverter'," "#'sphinxcontrib.rsvgconverter',"
42 '';
43
44 nativeBuildInputs = [
45 openstackdocstheme
46 sphinxHook
47 ];
48
49 sphinxBuilders = [ "man" ];
50
51 build-system = [ setuptools ];
52
53 dependencies = [
54 platformdirs
55 cryptography
56 dogpile-cache
57 jmespath
58 jsonpatch
59 keystoneauth1
60 munch
61 os-service-types
62 pbr
63 psutil
64 requestsexceptions
65 pyyaml
66 ];
67
68 # Checks moved to 'passthru.tests' to workaround slowness
69 doCheck = false;
70
71 passthru.tests = {
72 tests = callPackage ./tests.nix { };
73 };
74
75 pythonImportsCheck = [ "openstack" ];
76
77 meta = with lib; {
78 description = "SDK for building applications to work with OpenStack";
79 mainProgram = "openstack-inventory";
80 homepage = "https://github.com/openstack/openstacksdk";
81 license = licenses.asl20;
82 teams = [ teams.openstack ];
83 };
84}