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