1{
2 lib,
3 buildPythonPackage,
4 cryptography,
5 dnspython,
6 expiringdict,
7 fetchFromGitHub,
8 hatchling,
9 publicsuffixlist,
10 pyleri,
11 iana-etc,
12 pytestCheckHook,
13 pythonOlder,
14 requests,
15 timeout-decorator,
16}:
17
18buildPythonPackage rec {
19 pname = "checkdmarc";
20 version = "4.8.4";
21 format = "pyproject";
22
23 disabled = pythonOlder "3.7";
24
25 src = fetchFromGitHub {
26 owner = "domainaware";
27 repo = "checkdmarc";
28 rev = "refs/tags/${version}";
29 hash = "sha256-NNB5dYQzzdNapjP4mtpCW08BzfZ+FFRESUtpxCOzrdk=";
30 };
31
32 nativeBuildInputs = [ hatchling ];
33
34 propagatedBuildInputs = [
35 cryptography
36 dnspython
37 expiringdict
38 publicsuffixlist
39 pyleri
40 requests
41 timeout-decorator
42 ];
43
44 nativeCheckInputs = [ pytestCheckHook ];
45
46 pythonImportsCheck = [ "checkdmarc" ];
47
48 pytestFlagsArray = [ "tests.py" ];
49
50 disabledTests = [
51 # Tests require network access
52 "testDMARCPctLessThan100Warning"
53 "testSPFMissingARecord"
54 "testSPFMissingMXRecord"
55 "testSplitSPFRecord"
56 "testTooManySPFDNSLookups"
57 "testTooManySPFVoidDNSLookups"
58 ];
59
60 meta = with lib; {
61 description = "Parser for SPF and DMARC DNS records";
62 mainProgram = "checkdmarc";
63 homepage = "https://github.com/domainaware/checkdmarc";
64 changelog = "https://github.com/domainaware/checkdmarc/blob/${version}/CHANGELOG.md";
65 license = licenses.asl20;
66 maintainers = with maintainers; [ fab ];
67 };
68}