1{
2 lib,
3 buildPythonPackage,
4 cryptography,
5 defusedxml,
6 fetchFromGitHub,
7 gql,
8 graphql-core,
9 marshmallow,
10 pytest-cov-stub,
11 pytest-datafiles,
12 pytest-vcr,
13 pytestCheckHook,
14 python-box,
15 python-dateutil,
16 pythonOlder,
17 requests-pkcs12,
18 requests-toolbelt,
19 requests,
20 responses,
21 restfly,
22 semver,
23 setuptools,
24 typing-extensions,
25}:
26
27buildPythonPackage rec {
28 pname = "pytenable";
29 version = "1.6.0";
30 pyproject = true;
31
32 disabled = pythonOlder "3.7";
33
34 src = fetchFromGitHub {
35 owner = "tenable";
36 repo = "pyTenable";
37 rev = "refs/tags/${version}";
38 hash = "sha256-I6GlYPQI8qF9eyq8p4Wtkz8UEGth51ZALwA+Mu3TqhQ=";
39 };
40
41 pythonRelaxDeps = [
42 "cryptography"
43 "defusedxml"
44 ];
45
46 build-system = [ setuptools ];
47
48 dependencies = [
49 defusedxml
50 marshmallow
51 python-box
52 cryptography
53 gql
54 graphql-core
55 python-dateutil
56 requests
57 requests-toolbelt
58 restfly
59 semver
60 typing-extensions
61 ];
62
63 nativeCheckInputs = [
64 pytest-cov-stub
65 pytest-datafiles
66 pytest-vcr
67 pytestCheckHook
68 requests-pkcs12
69 responses
70 ];
71
72 disabledTestPaths = [
73 # Disable tests that requires network access
74 "tests/io/"
75 ];
76
77 disabledTests = [
78 # Disable tests that requires a Docker container
79 "test_uploads_docker_push_name_typeerror"
80 "test_uploads_docker_push_tag_typeerror"
81 "test_uploads_docker_push_cs_name_typeerror"
82 "test_uploads_docker_push_cs_tag_typeerror"
83 # Test requires network access
84 "test_assets_list_vcr"
85 "test_events_list_vcr"
86 ];
87
88 pythonImportsCheck = [ "tenable" ];
89
90 meta = with lib; {
91 description = "Python library for the Tenable.io and TenableSC API";
92 homepage = "https://github.com/tenable/pyTenable";
93 changelog = "https://github.com/tenable/pyTenable/releases/tag/${version}";
94 license = with licenses; [ mit ];
95 maintainers = with maintainers; [ fab ];
96 };
97}