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