1{
2 lib,
3 boto3,
4 buildPythonPackage,
5 fetchFromGitHub,
6 ftfy,
7 mailchecker,
8 openpyxl,
9 orjson,
10 phonenumbers,
11 beautifulsoup4,
12 pytestCheckHook,
13 python-dateutil,
14 python-decouple,
15 python-fsutil,
16 python-slugify,
17 pythonOlder,
18 pythonRelaxDepsHook,
19 pyyaml,
20 requests,
21 setuptools,
22 toml,
23 xlrd,
24 xmltodict,
25}:
26
27buildPythonPackage rec {
28 pname = "python-benedict";
29 version = "0.33.2";
30 pyproject = true;
31
32 disabled = pythonOlder "3.7";
33
34 src = fetchFromGitHub {
35 owner = "fabiocaccamo";
36 repo = "python-benedict";
37 rev = "refs/tags/${version}";
38 hash = "sha256-1/eLJFXACn1W5Yz43BIhdqqUVk3t9285d8aLwH+VmAE=";
39 };
40
41 pythonRelaxDeps = [ "boto3" ];
42
43 nativeBuildInputs = [
44 pythonRelaxDepsHook
45 setuptools
46 ];
47
48 propagatedBuildInputs = [
49 python-fsutil
50 python-slugify
51 requests
52 ];
53
54 passthru.optional-dependencies = {
55 all = [
56 beautifulsoup4
57 boto3
58 ftfy
59 mailchecker
60 openpyxl
61 phonenumbers
62 python-dateutil
63 pyyaml
64 toml
65 xlrd
66 xmltodict
67 ];
68 html = [
69 beautifulsoup4
70 xmltodict
71 ];
72 io = [
73 beautifulsoup4
74 openpyxl
75 pyyaml
76 toml
77 xlrd
78 xmltodict
79 ];
80 parse = [
81 ftfy
82 mailchecker
83 phonenumbers
84 python-dateutil
85 ];
86 s3 = [ boto3 ];
87 toml = [ toml ];
88 xls = [
89 openpyxl
90 xlrd
91 ];
92 xml = [ xmltodict ];
93 yaml = [ pyyaml ];
94 };
95
96 nativeCheckInputs = [
97 orjson
98 pytestCheckHook
99 python-decouple
100 ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
101
102 disabledTests = [
103 # Tests require network access
104 "test_from_base64_with_valid_url_valid_content"
105 "test_from_html_with_valid_file_valid_content"
106 "test_from_html_with_valid_url_valid_content"
107 "test_from_json_with_valid_url_valid_content"
108 "test_from_pickle_with_valid_url_valid_content"
109 "test_from_plist_with_valid_url_valid_content"
110 "test_from_query_string_with_valid_url_valid_content"
111 "test_from_toml_with_valid_url_valid_content"
112 "test_from_xls_with_valid_url_valid_content"
113 "test_from_xml_with_valid_url_valid_content"
114 "test_from_yaml_with_valid_url_valid_content"
115 ];
116
117 pythonImportsCheck = [ "benedict" ];
118
119 meta = with lib; {
120 description = "Module with keylist/keypath support";
121 homepage = "https://github.com/fabiocaccamo/python-benedict";
122 changelog = "https://github.com/fabiocaccamo/python-benedict/blob/${version}/CHANGELOG.md";
123 license = licenses.mit;
124 maintainers = with maintainers; [ fab ];
125 };
126}