1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6
7 # build-system
8 setuptools,
9 cffi,
10
11 # dependencies
12 future,
13 jinja2,
14 junos-eznc,
15 lxml,
16 ncclient,
17 netaddr,
18 netmiko,
19 netutils,
20 paramiko,
21 pyeapi,
22 pyyaml,
23 requests,
24 scp,
25 textfsm,
26 ttp,
27 ttp-templates,
28 typing-extensions,
29
30 # tests
31 pytestCheckHook,
32 ddt,
33 mock,
34}:
35
36buildPythonPackage rec {
37 pname = "napalm";
38 version = "5.0.0";
39 format = "pyproject";
40
41 disabled = pythonOlder "3.7";
42
43 src = fetchFromGitHub {
44 owner = "napalm-automation";
45 repo = "napalm";
46 rev = "refs/tags/${version}";
47 hash = "sha256-Abw3h69qTFwOOFeAfivqAIWLozErJ1yZZfx7CbMy1AI=";
48 };
49
50 nativeBuildInputs = [ setuptools ];
51
52 propagatedBuildInputs = [
53 cffi
54 jinja2
55 junos-eznc
56 lxml
57 ncclient
58 netaddr
59 netmiko
60 # breaks infinite recursion
61 (netutils.override { napalm = null; })
62 paramiko
63 pyeapi
64 pyyaml
65 requests
66 scp
67 setuptools
68 textfsm
69 ttp
70 ttp-templates
71 typing-extensions
72 ];
73
74 nativeCheckInputs = [
75 pytestCheckHook
76 mock
77 ddt
78 ];
79
80 meta = with lib; {
81 description = "Network Automation and Programmability Abstraction Layer with Multivendor support";
82 homepage = "https://github.com/napalm-automation/napalm";
83 license = licenses.asl20;
84 maintainers = with maintainers; [ ] ++ teams.c3d2.members;
85 };
86}