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