1{ lib
2, buildPythonPackage
3, click
4, colorama
5, configparser
6, distro
7, fetchFromGitHub
8, gevent
9, jinja2
10, paramiko
11, pytestCheckHook
12, python-dateutil
13, pythonOlder
14, pywinrm
15, pyyaml
16, setuptools
17}:
18
19buildPythonPackage rec {
20 pname = "pyinfra";
21 version = "2.5.3";
22 format = "setuptools";
23
24 disabled = pythonOlder "3.7";
25
26 src = fetchFromGitHub {
27 owner = "Fizzadar";
28 repo = pname;
29 rev = "refs/tags/v${version}";
30 hash = "sha256-1buLaBhhmc4FnROr5M+bqSlsbkfjl58a1/4qWBXE97Y=";
31 };
32
33 propagatedBuildInputs = [
34 click
35 colorama
36 configparser
37 distro
38 gevent
39 jinja2
40 paramiko
41 python-dateutil
42 pywinrm
43 pyyaml
44 setuptools
45 ];
46
47 checkInputs = [
48 pytestCheckHook
49 ];
50
51 pythonImportsCheck = [
52 "pyinfra"
53 ];
54
55 disabledTests = [
56 # Test requires SSH binary
57 "test_load_ssh_config"
58 ];
59
60 meta = with lib; {
61 description = "Python-based infrastructure automation";
62 longDescription = ''
63 pyinfra automates/provisions/manages/deploys infrastructure. It can be used for
64 ad-hoc command execution, service deployment, configuration management and more.
65 '';
66 homepage = "https://github.com/Fizzadar/pyinfra";
67 maintainers = with maintainers; [ totoroot ];
68 license = licenses.mit;
69 };
70}