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