1{
2 lib,
3 aioquic,
4 buildPythonPackage,
5 cacert,
6 cryptography,
7 curio,
8 fetchPypi,
9 h2,
10 httpcore,
11 httpx,
12 idna,
13 hatchling,
14 pytestCheckHook,
15 pythonOlder,
16 requests,
17 requests-toolbelt,
18 sniffio,
19 trio,
20}:
21
22buildPythonPackage rec {
23 pname = "dnspython";
24 version = "2.6.1";
25 format = "pyproject";
26
27 disabled = pythonOlder "3.8";
28
29 src = fetchPypi {
30 inherit pname version;
31 hash = "sha256-6PD5wjp7fLmd7WTmw6bz5wHXj1DFXgArg53qciXP98w=";
32 };
33
34 nativeBuildInputs = [ hatchling ];
35
36 passthru.optional-dependencies = {
37 DOH = [
38 httpx
39 h2
40 requests
41 requests-toolbelt
42 httpcore
43 ];
44 IDNA = [ idna ];
45 DNSSEC = [ cryptography ];
46 trio = [ trio ];
47 curio = [
48 curio
49 sniffio
50 ];
51 DOQ = [ aioquic ];
52 };
53
54 nativeCheckInputs = [ pytestCheckHook ];
55
56 checkInputs = [ cacert ] ++ passthru.optional-dependencies.DNSSEC;
57
58 disabledTests = [
59 # dns.exception.SyntaxError: protocol not found
60 "test_misc_good_WKS_text"
61 ];
62
63 pythonImportsCheck = [ "dns" ];
64
65 meta = with lib; {
66 description = "DNS toolkit for Python";
67 homepage = "https://www.dnspython.org";
68 changelog = "https://github.com/rthalley/dnspython/blob/v${version}/doc/whatsnew.rst";
69 license = with licenses; [ isc ];
70 maintainers = with maintainers; [ gador ];
71 };
72}