1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5
6# build-system
7, setuptools
8, cffi
9
10# dependencies
11, future
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 = "4.1.0";
38 format = "pyproject";
39
40 disabled = pythonOlder "3.7";
41
42 src = fetchFromGitHub {
43 owner = "napalm-automation";
44 repo = "napalm";
45 rev = "refs/tags/${version}";
46 hash = "sha256-JqjuYMJcP58UMn1pPYg7x8KpqCKQUs19Ng9HbI2iX38=";
47 };
48
49 nativeBuildInputs = [
50 setuptools
51 ];
52
53 propagatedBuildInputs = [
54 cffi
55 future
56 jinja2
57 junos-eznc
58 lxml
59 ncclient
60 netaddr
61 netmiko
62 # breaks infinite recursion
63 (netutils.override { napalm = null; })
64 paramiko
65 pyeapi
66 pyyaml
67 requests
68 scp
69 setuptools
70 textfsm
71 ttp
72 ttp-templates
73 typing-extensions
74 ];
75
76 nativeCheckInputs = [ pytestCheckHook mock ddt ];
77
78 meta = with lib; {
79 description =
80 "Network Automation and Programmability Abstraction Layer with Multivendor support";
81 homepage = "https://github.com/napalm-automation/napalm";
82 license = licenses.asl20;
83 maintainers = with maintainers; [ ] ++ teams.c3d2.members;
84 };
85}