dnspython 2.7.0__tar.gz → 2.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. {dnspython-2.7.0 → dnspython-2.8.0}/PKG-INFO +42 -42
  2. {dnspython-2.7.0 → dnspython-2.8.0}/README.md +22 -21
  3. {dnspython-2.7.0 → dnspython-2.8.0}/dns/__init__.py +2 -0
  4. {dnspython-2.7.0 → dnspython-2.8.0}/dns/_asyncbackend.py +1 -1
  5. {dnspython-2.7.0 → dnspython-2.8.0}/dns/_asyncio_backend.py +6 -5
  6. {dnspython-2.7.0 → dnspython-2.8.0}/dns/_features.py +5 -5
  7. {dnspython-2.7.0 → dnspython-2.8.0}/dns/_immutable_ctx.py +1 -1
  8. dnspython-2.8.0/dns/_no_ssl.py +61 -0
  9. dnspython-2.8.0/dns/_tls_util.py +19 -0
  10. {dnspython-2.7.0 → dnspython-2.8.0}/dns/_trio_backend.py +4 -2
  11. {dnspython-2.7.0 → dnspython-2.8.0}/dns/asyncquery.py +131 -91
  12. {dnspython-2.7.0 → dnspython-2.8.0}/dns/asyncresolver.py +38 -35
  13. dnspython-2.8.0/dns/btree.py +850 -0
  14. dnspython-2.8.0/dns/btreezone.py +367 -0
  15. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssec.py +73 -78
  16. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/__init__.py +9 -6
  17. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/base.py +3 -3
  18. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/cryptography.py +4 -4
  19. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/dsa.py +3 -1
  20. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/ecdsa.py +7 -4
  21. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/eddsa.py +1 -1
  22. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssecalgs/rsa.py +3 -1
  23. {dnspython-2.7.0 → dnspython-2.8.0}/dns/e164.py +6 -6
  24. {dnspython-2.7.0 → dnspython-2.8.0}/dns/edns.py +41 -22
  25. {dnspython-2.7.0 → dnspython-2.8.0}/dns/entropy.py +6 -6
  26. {dnspython-2.7.0 → dnspython-2.8.0}/dns/enum.py +8 -11
  27. {dnspython-2.7.0 → dnspython-2.8.0}/dns/exception.py +4 -4
  28. {dnspython-2.7.0 → dnspython-2.8.0}/dns/grange.py +1 -1
  29. {dnspython-2.7.0 → dnspython-2.8.0}/dns/inet.py +2 -4
  30. {dnspython-2.7.0 → dnspython-2.8.0}/dns/ipv4.py +4 -5
  31. {dnspython-2.7.0 → dnspython-2.8.0}/dns/ipv6.py +4 -4
  32. {dnspython-2.7.0 → dnspython-2.8.0}/dns/message.py +109 -88
  33. {dnspython-2.7.0 → dnspython-2.8.0}/dns/name.py +21 -16
  34. {dnspython-2.7.0 → dnspython-2.8.0}/dns/nameserver.py +16 -18
  35. {dnspython-2.7.0 → dnspython-2.8.0}/dns/node.py +3 -4
  36. {dnspython-2.7.0 → dnspython-2.8.0}/dns/opcode.py +3 -1
  37. {dnspython-2.7.0 → dnspython-2.8.0}/dns/query.py +296 -175
  38. {dnspython-2.7.0 → dnspython-2.8.0}/dns/quic/__init__.py +16 -18
  39. {dnspython-2.7.0 → dnspython-2.8.0}/dns/quic/_asyncio.py +14 -5
  40. {dnspython-2.7.0 → dnspython-2.8.0}/dns/quic/_common.py +11 -6
  41. {dnspython-2.7.0 → dnspython-2.8.0}/dns/quic/_sync.py +32 -21
  42. {dnspython-2.7.0 → dnspython-2.8.0}/dns/quic/_trio.py +6 -2
  43. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rcode.py +2 -2
  44. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdata.py +67 -43
  45. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdataset.py +31 -35
  46. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdatatype.py +2 -0
  47. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/AMTRELAY.py +3 -5
  48. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/CAA.py +1 -5
  49. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/CERT.py +3 -6
  50. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/CSYNC.py +1 -1
  51. dnspython-2.8.0/dns/rdtypes/ANY/DSYNC.py +72 -0
  52. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/HIP.py +1 -1
  53. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/L32.py +1 -0
  54. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/L64.py +1 -0
  55. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/LOC.py +8 -14
  56. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/LP.py +1 -1
  57. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/NID.py +1 -0
  58. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/NSEC3.py +2 -8
  59. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/NSEC3PARAM.py +1 -1
  60. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/OPENPGPKEY.py +1 -1
  61. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/RRSIG.py +9 -11
  62. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/SOA.py +1 -9
  63. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/SSHFP.py +3 -4
  64. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/TKEY.py +4 -11
  65. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/URI.py +1 -1
  66. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/ZONEMD.py +3 -5
  67. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/__init__.py +1 -0
  68. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/CH/A.py +1 -0
  69. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/APL.py +2 -2
  70. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/DHCID.py +1 -1
  71. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/IPSECKEY.py +3 -7
  72. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/NAPTR.py +6 -7
  73. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/PX.py +1 -1
  74. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/SRV.py +1 -1
  75. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/WKS.py +1 -1
  76. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/dnskeybase.py +2 -6
  77. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/dsbase.py +3 -5
  78. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/euibase.py +4 -1
  79. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/mxbase.py +1 -1
  80. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/svcbbase.py +10 -8
  81. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/tlsabase.py +3 -5
  82. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/txtbase.py +8 -5
  83. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/util.py +19 -7
  84. {dnspython-2.7.0 → dnspython-2.8.0}/dns/renderer.py +13 -4
  85. {dnspython-2.7.0 → dnspython-2.8.0}/dns/resolver.py +128 -113
  86. {dnspython-2.7.0 → dnspython-2.8.0}/dns/reversename.py +3 -2
  87. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rrset.py +21 -19
  88. {dnspython-2.7.0 → dnspython-2.8.0}/dns/tokenizer.py +18 -20
  89. {dnspython-2.7.0 → dnspython-2.8.0}/dns/transaction.py +18 -16
  90. {dnspython-2.7.0 → dnspython-2.8.0}/dns/tsig.py +9 -2
  91. {dnspython-2.7.0 → dnspython-2.8.0}/dns/tsigkeyring.py +2 -2
  92. {dnspython-2.7.0 → dnspython-2.8.0}/dns/ttl.py +2 -4
  93. {dnspython-2.7.0 → dnspython-2.8.0}/dns/update.py +16 -13
  94. {dnspython-2.7.0 → dnspython-2.8.0}/dns/version.py +5 -21
  95. {dnspython-2.7.0 → dnspython-2.8.0}/dns/versioned.py +29 -27
  96. {dnspython-2.7.0 → dnspython-2.8.0}/dns/win32util.py +226 -30
  97. {dnspython-2.7.0 → dnspython-2.8.0}/dns/wire.py +9 -0
  98. {dnspython-2.7.0 → dnspython-2.8.0}/dns/xfr.py +49 -36
  99. {dnspython-2.7.0 → dnspython-2.8.0}/dns/zone.py +107 -79
  100. {dnspython-2.7.0 → dnspython-2.8.0}/dns/zonefile.py +42 -30
  101. dnspython-2.8.0/examples/mx-typed.py +11 -0
  102. {dnspython-2.7.0 → dnspython-2.8.0}/examples/xfr.py +5 -1
  103. {dnspython-2.7.0 → dnspython-2.8.0}/pyproject.toml +30 -19
  104. {dnspython-2.7.0 → dnspython-2.8.0}/tests/example +3 -1
  105. {dnspython-2.7.0 → dnspython-2.8.0}/tests/example1.good +2 -0
  106. {dnspython-2.7.0 → dnspython-2.8.0}/tests/example2.good +2 -0
  107. {dnspython-2.7.0 → dnspython-2.8.0}/tests/example3.good +2 -0
  108. {dnspython-2.7.0 → dnspython-2.8.0}/tests/example4.good +2 -0
  109. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_async.py +28 -0
  110. dnspython-2.8.0/tests/test_btree.py +722 -0
  111. dnspython-2.8.0/tests/test_btreezone.py +236 -0
  112. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_ddr.py +3 -3
  113. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_dnssec.py +15 -0
  114. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_doh.py +11 -0
  115. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_edns.py +10 -0
  116. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_query.py +12 -0
  117. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdata.py +52 -0
  118. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_resolver.py +25 -1
  119. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_svcb.py +6 -3
  120. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_tsig.py +36 -0
  121. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_xfr.py +37 -0
  122. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_zone.py +27 -20
  123. {dnspython-2.7.0 → dnspython-2.8.0}/tests/util.py +19 -0
  124. {dnspython-2.7.0 → dnspython-2.8.0}/util/generate-features +11 -1
  125. {dnspython-2.7.0 → dnspython-2.8.0}/.gitignore +0 -0
  126. {dnspython-2.7.0 → dnspython-2.8.0}/LICENSE +0 -0
  127. {dnspython-2.7.0 → dnspython-2.8.0}/dns/_ddr.py +0 -0
  128. {dnspython-2.7.0 → dnspython-2.8.0}/dns/asyncbackend.py +0 -0
  129. {dnspython-2.7.0 → dnspython-2.8.0}/dns/dnssectypes.py +0 -0
  130. {dnspython-2.7.0 → dnspython-2.8.0}/dns/flags.py +0 -0
  131. {dnspython-2.7.0 → dnspython-2.8.0}/dns/immutable.py +0 -0
  132. {dnspython-2.7.0 → dnspython-2.8.0}/dns/namedict.py +0 -0
  133. {dnspython-2.7.0 → dnspython-2.8.0}/dns/py.typed +0 -0
  134. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdataclass.py +0 -0
  135. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/AFSDB.py +0 -0
  136. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/AVC.py +0 -0
  137. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/CDNSKEY.py +0 -0
  138. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/CDS.py +0 -0
  139. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/CNAME.py +0 -0
  140. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/DLV.py +0 -0
  141. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/DNAME.py +0 -0
  142. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/DNSKEY.py +0 -0
  143. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/DS.py +0 -0
  144. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/EUI48.py +0 -0
  145. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/EUI64.py +0 -0
  146. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/GPOS.py +0 -0
  147. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/HINFO.py +0 -0
  148. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/ISDN.py +0 -0
  149. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/MX.py +0 -0
  150. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/NINFO.py +0 -0
  151. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/NS.py +0 -0
  152. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/NSEC.py +0 -0
  153. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/OPT.py +0 -0
  154. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/PTR.py +0 -0
  155. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/RESINFO.py +0 -0
  156. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/RP.py +0 -0
  157. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/RT.py +0 -0
  158. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/SMIMEA.py +0 -0
  159. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/SPF.py +0 -0
  160. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/TLSA.py +0 -0
  161. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/TSIG.py +0 -0
  162. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/TXT.py +0 -0
  163. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/WALLET.py +0 -0
  164. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/ANY/X25.py +0 -0
  165. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/CH/__init__.py +0 -0
  166. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/A.py +0 -0
  167. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/AAAA.py +0 -0
  168. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/HTTPS.py +0 -0
  169. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/KX.py +0 -0
  170. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/NSAP.py +0 -0
  171. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/NSAP_PTR.py +0 -0
  172. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/SVCB.py +0 -0
  173. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/IN/__init__.py +0 -0
  174. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/__init__.py +0 -0
  175. {dnspython-2.7.0 → dnspython-2.8.0}/dns/rdtypes/nsbase.py +0 -0
  176. {dnspython-2.7.0 → dnspython-2.8.0}/dns/serial.py +0 -0
  177. {dnspython-2.7.0 → dnspython-2.8.0}/dns/set.py +0 -0
  178. {dnspython-2.7.0 → dnspython-2.8.0}/dns/zonetypes.py +0 -0
  179. {dnspython-2.7.0 → dnspython-2.8.0}/examples/async_dns.py +0 -0
  180. {dnspython-2.7.0 → dnspython-2.8.0}/examples/ddns.py +0 -0
  181. {dnspython-2.7.0 → dnspython-2.8.0}/examples/ddr.py +0 -0
  182. {dnspython-2.7.0 → dnspython-2.8.0}/examples/doh-json.py +0 -0
  183. {dnspython-2.7.0 → dnspython-2.8.0}/examples/doh.py +0 -0
  184. {dnspython-2.7.0 → dnspython-2.8.0}/examples/doq.py +0 -0
  185. {dnspython-2.7.0 → dnspython-2.8.0}/examples/dot.py +0 -0
  186. {dnspython-2.7.0 → dnspython-2.8.0}/examples/e164.py +0 -0
  187. {dnspython-2.7.0 → dnspython-2.8.0}/examples/ecs.py +0 -0
  188. {dnspython-2.7.0 → dnspython-2.8.0}/examples/edns.py +0 -0
  189. {dnspython-2.7.0 → dnspython-2.8.0}/examples/edns_resolver.py +0 -0
  190. {dnspython-2.7.0 → dnspython-2.8.0}/examples/mx.py +0 -0
  191. {dnspython-2.7.0 → dnspython-2.8.0}/examples/name.py +0 -0
  192. {dnspython-2.7.0 → dnspython-2.8.0}/examples/query_specific.py +0 -0
  193. {dnspython-2.7.0 → dnspython-2.8.0}/examples/receive_notify.py +0 -0
  194. {dnspython-2.7.0 → dnspython-2.8.0}/examples/reverse.py +0 -0
  195. {dnspython-2.7.0 → dnspython-2.8.0}/examples/reverse_name.py +0 -0
  196. {dnspython-2.7.0 → dnspython-2.8.0}/examples/send_notify.py +0 -0
  197. {dnspython-2.7.0 → dnspython-2.8.0}/examples/tsig.py +0 -0
  198. {dnspython-2.7.0 → dnspython-2.8.0}/examples/wire_read_tcp.py +0 -0
  199. {dnspython-2.7.0 → dnspython-2.8.0}/examples/zonediff.py +0 -0
  200. {dnspython-2.7.0 → dnspython-2.8.0}/tests/__init__.py +0 -0
  201. {dnspython-2.7.0 → dnspython-2.8.0}/tests/doh.py +0 -0
  202. {dnspython-2.7.0 → dnspython-2.8.0}/tests/doq.py +0 -0
  203. {dnspython-2.7.0 → dnspython-2.8.0}/tests/keys.py +0 -0
  204. {dnspython-2.7.0 → dnspython-2.8.0}/tests/md_module.py +0 -0
  205. {dnspython-2.7.0 → dnspython-2.8.0}/tests/mx-2-0.pickle +0 -0
  206. {dnspython-2.7.0 → dnspython-2.8.0}/tests/nanonameserver.py +0 -0
  207. {dnspython-2.7.0 → dnspython-2.8.0}/tests/query +0 -0
  208. {dnspython-2.7.0 → dnspython-2.8.0}/tests/stxt_module.py +0 -0
  209. {dnspython-2.7.0 → dnspython-2.8.0}/tests/svcb_test_vectors.generic +0 -0
  210. {dnspython-2.7.0 → dnspython-2.8.0}/tests/svcb_test_vectors.text +0 -0
  211. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_address.py +0 -0
  212. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_bugs.py +0 -0
  213. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_constants.py +0 -0
  214. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_dnssecalgs.py +0 -0
  215. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_doq.py +0 -0
  216. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_entropy.py +0 -0
  217. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_exceptions.py +0 -0
  218. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_features.py +0 -0
  219. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_flags.py +0 -0
  220. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_generate.py +0 -0
  221. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_grange.py +0 -0
  222. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_immutable.py +0 -0
  223. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_message.py +0 -0
  224. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_name.py +0 -0
  225. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_namedict.py +0 -0
  226. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_nsec3.py +0 -0
  227. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_nsec3_hash.py +0 -0
  228. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_ntoaaton.py +0 -0
  229. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_processing_order.py +0 -0
  230. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdataset.py +0 -0
  231. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdtypeandclass.py +0 -0
  232. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdtypeanydnskey.py +0 -0
  233. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdtypeanyeui.py +0 -0
  234. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdtypeanyloc.py +0 -0
  235. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rdtypeanytkey.py +0 -0
  236. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_renderer.py +0 -0
  237. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_resolution.py +0 -0
  238. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_resolver_override.py +0 -0
  239. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rrset.py +0 -0
  240. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_rrset_reader.py +0 -0
  241. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_serial.py +0 -0
  242. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_set.py +0 -0
  243. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_tokenizer.py +0 -0
  244. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_transaction.py +0 -0
  245. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_tsigkeyring.py +0 -0
  246. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_ttl.py +0 -0
  247. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_update.py +0 -0
  248. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_wire.py +0 -0
  249. {dnspython-2.7.0 → dnspython-2.8.0}/tests/test_zonedigest.py +0 -0
  250. {dnspython-2.7.0 → dnspython-2.8.0}/tests/tls/ca.crt +0 -0
  251. {dnspython-2.7.0 → dnspython-2.8.0}/tests/tls/private.pem +0 -0
  252. {dnspython-2.7.0 → dnspython-2.8.0}/tests/tls/public.crt +0 -0
  253. {dnspython-2.7.0 → dnspython-2.8.0}/tests/ttxt_module.py +0 -0
  254. {dnspython-2.7.0 → dnspython-2.8.0}/tests/utest.py +0 -0
  255. {dnspython-2.7.0 → dnspython-2.8.0}/util/constants-tool +0 -0
  256. {dnspython-2.7.0 → dnspython-2.8.0}/util/generate-mx-pickle.py +0 -0
  257. {dnspython-2.7.0 → dnspython-2.8.0}/util/generate-rdatatype-doc.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: dnspython
3
- Version: 2.7.0
3
+ Version: 2.8.0
4
4
  Summary: DNS toolkit
5
5
  Project-URL: homepage, https://www.dnspython.org
6
6
  Project-URL: repository, https://github.com/rthalley/dnspython.git
@@ -17,42 +17,41 @@ Classifier: Operating System :: Microsoft :: Windows
17
17
  Classifier: Operating System :: POSIX
18
18
  Classifier: Programming Language :: Python
19
19
  Classifier: Programming Language :: Python :: 3
20
- Classifier: Programming Language :: Python :: 3.9
21
20
  Classifier: Programming Language :: Python :: 3.10
22
21
  Classifier: Programming Language :: Python :: 3.11
23
22
  Classifier: Programming Language :: Python :: 3.12
24
23
  Classifier: Programming Language :: Python :: 3.13
25
24
  Classifier: Topic :: Internet :: Name Service (DNS)
26
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
- Requires-Python: >=3.9
26
+ Requires-Python: >=3.10
28
27
  Provides-Extra: dev
29
- Requires-Dist: black>=23.1.0; extra == 'dev'
28
+ Requires-Dist: black>=25.1.0; extra == 'dev'
30
29
  Requires-Dist: coverage>=7.0; extra == 'dev'
31
30
  Requires-Dist: flake8>=7; extra == 'dev'
32
- Requires-Dist: hypercorn>=0.16.0; extra == 'dev'
33
- Requires-Dist: mypy>=1.8; extra == 'dev'
31
+ Requires-Dist: hypercorn>=0.17.0; extra == 'dev'
32
+ Requires-Dist: mypy>=1.17; extra == 'dev'
34
33
  Requires-Dist: pylint>=3; extra == 'dev'
35
- Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
36
- Requires-Dist: pytest>=7.4; extra == 'dev'
37
- Requires-Dist: quart-trio>=0.11.0; extra == 'dev'
38
- Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == 'dev'
39
- Requires-Dist: sphinx>=7.2.0; extra == 'dev'
40
- Requires-Dist: twine>=4.0.0; extra == 'dev'
41
- Requires-Dist: wheel>=0.42.0; extra == 'dev'
34
+ Requires-Dist: pytest-cov>=6.2.0; extra == 'dev'
35
+ Requires-Dist: pytest>=8.4; extra == 'dev'
36
+ Requires-Dist: quart-trio>=0.12.0; extra == 'dev'
37
+ Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == 'dev'
38
+ Requires-Dist: sphinx>=8.2.0; extra == 'dev'
39
+ Requires-Dist: twine>=6.1.0; extra == 'dev'
40
+ Requires-Dist: wheel>=0.45.0; extra == 'dev'
42
41
  Provides-Extra: dnssec
43
- Requires-Dist: cryptography>=43; extra == 'dnssec'
42
+ Requires-Dist: cryptography>=45; extra == 'dnssec'
44
43
  Provides-Extra: doh
45
- Requires-Dist: h2>=4.1.0; extra == 'doh'
44
+ Requires-Dist: h2>=4.2.0; extra == 'doh'
46
45
  Requires-Dist: httpcore>=1.0.0; extra == 'doh'
47
- Requires-Dist: httpx>=0.26.0; extra == 'doh'
46
+ Requires-Dist: httpx>=0.28.0; extra == 'doh'
48
47
  Provides-Extra: doq
49
- Requires-Dist: aioquic>=1.0.0; extra == 'doq'
48
+ Requires-Dist: aioquic>=1.2.0; extra == 'doq'
50
49
  Provides-Extra: idna
51
- Requires-Dist: idna>=3.7; extra == 'idna'
50
+ Requires-Dist: idna>=3.10; extra == 'idna'
52
51
  Provides-Extra: trio
53
- Requires-Dist: trio>=0.23; extra == 'trio'
52
+ Requires-Dist: trio>=0.30; extra == 'trio'
54
53
  Provides-Extra: wmi
55
- Requires-Dist: wmi>=1.5.1; extra == 'wmi'
54
+ Requires-Dist: wmi>=1.5.1; (platform_system == 'Windows') and extra == 'wmi'
56
55
  Description-Content-Type: text/markdown
57
56
 
58
57
  # dnspython
@@ -65,39 +64,41 @@ Description-Content-Type: text/markdown
65
64
 
66
65
  ## INTRODUCTION
67
66
 
68
- dnspython is a DNS toolkit for Python. It supports almost all record types. It
69
- can be used for queries, zone transfers, and dynamic updates. It supports TSIG
70
- authenticated messages and EDNS0.
67
+ `dnspython` is a DNS toolkit for Python. It supports almost all record types. It
68
+ can be used for queries, zone transfers, and dynamic updates. It supports
69
+ TSIG-authenticated messages and EDNS0.
71
70
 
72
- dnspython provides both high and low level access to DNS. The high level classes
73
- perform queries for data of a given name, type, and class, and return an answer
74
- set. The low level classes allow direct manipulation of DNS zones, messages,
75
- names, and records.
71
+ `dnspython` provides both high- and low-level access to DNS. The high-level
72
+ classes perform queries for data of a given name, type, and class, and return an
73
+ answer set. The low-level classes allow direct manipulation of DNS zones,
74
+ messages, names, and records.
76
75
 
77
- To see a few of the ways dnspython can be used, look in the `examples/`
76
+ To see a few of the ways `dnspython` can be used, look in the `examples/`
78
77
  directory.
79
78
 
80
- dnspython is a utility to work with DNS, `/etc/hosts` is thus not used. For
79
+ `dnspython` is a utility to work with DNS, `/etc/hosts` is thus not used. For
81
80
  simple forward DNS lookups, it's better to use `socket.getaddrinfo()` or
82
81
  `socket.gethostbyname()`.
83
82
 
84
- dnspython originated at Nominum where it was developed
85
- to facilitate the testing of DNS software.
83
+ `dnspython` originated at Nominum where it was developed to facilitate the
84
+ testing of DNS software.
86
85
 
87
86
  ## ABOUT THIS RELEASE
88
87
 
89
- This is dnspython 2.7.0.
88
+ This is of `dnspython` 2.8.0.
90
89
  Please read
91
90
  [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) for
92
91
  information about the changes in this release.
93
92
 
94
93
  ## INSTALLATION
95
94
 
96
- * Many distributions have dnspython packaged for you, so you should
97
- check there first.
95
+ * Many distributions have dnspython packaged for you, so you should check there
96
+ first.
98
97
  * To use a wheel downloaded from PyPi, run:
99
98
 
99
+ ```
100
100
  pip install dnspython
101
+ ```
101
102
 
102
103
  * To install from the source code, go into the top-level of the source code
103
104
  and run:
@@ -108,11 +109,12 @@ information about the changes in this release.
108
109
  pip install dist/*.whl
109
110
  ```
110
111
 
111
- * To install the latest from the main branch, run `pip install git+https://github.com/rthalley/dnspython.git`
112
+ * To install the latest from the main branch, run
113
+ `pip install git+https://github.com/rthalley/dnspython.git`
112
114
 
113
- Dnspython's default installation does not depend on any modules other than
115
+ `dnspython`'s default installation does not depend on any modules other than
114
116
  those in the Python standard library. To use some features, additional modules
115
- must be installed. For convenience, pip options are defined for the
117
+ must be installed. For convenience, `pip` options are defined for the
116
118
  requirements.
117
119
 
118
120
  If you want to use DNS-over-HTTPS, run
@@ -140,10 +142,8 @@ Note that you can install any combination of the above, e.g.:
140
142
 
141
143
  ### Notices
142
144
 
143
- Python 2.x support ended with the release of 1.16.0. Dnspython 2.6.x supports
144
- Python 3.8 and later, though support for 3.8 ends on October 14, 2024.
145
- Dnspython 2.7.x supports Python 3.9 and later. Future support is aligned with the
146
- lifetime of the Python 3 versions.
145
+ Python 2.x support ended with the release of 1.16.0. `dnspython` supports Python 3.10
146
+ and later. Future support is aligned with the lifetime of the Python 3 versions.
147
147
 
148
148
  Documentation has moved to
149
149
  [dnspython.readthedocs.io](https://dnspython.readthedocs.io).
@@ -8,39 +8,41 @@
8
8
 
9
9
  ## INTRODUCTION
10
10
 
11
- dnspython is a DNS toolkit for Python. It supports almost all record types. It
12
- can be used for queries, zone transfers, and dynamic updates. It supports TSIG
13
- authenticated messages and EDNS0.
11
+ `dnspython` is a DNS toolkit for Python. It supports almost all record types. It
12
+ can be used for queries, zone transfers, and dynamic updates. It supports
13
+ TSIG-authenticated messages and EDNS0.
14
14
 
15
- dnspython provides both high and low level access to DNS. The high level classes
16
- perform queries for data of a given name, type, and class, and return an answer
17
- set. The low level classes allow direct manipulation of DNS zones, messages,
18
- names, and records.
15
+ `dnspython` provides both high- and low-level access to DNS. The high-level
16
+ classes perform queries for data of a given name, type, and class, and return an
17
+ answer set. The low-level classes allow direct manipulation of DNS zones,
18
+ messages, names, and records.
19
19
 
20
- To see a few of the ways dnspython can be used, look in the `examples/`
20
+ To see a few of the ways `dnspython` can be used, look in the `examples/`
21
21
  directory.
22
22
 
23
- dnspython is a utility to work with DNS, `/etc/hosts` is thus not used. For
23
+ `dnspython` is a utility to work with DNS, `/etc/hosts` is thus not used. For
24
24
  simple forward DNS lookups, it's better to use `socket.getaddrinfo()` or
25
25
  `socket.gethostbyname()`.
26
26
 
27
- dnspython originated at Nominum where it was developed
28
- to facilitate the testing of DNS software.
27
+ `dnspython` originated at Nominum where it was developed to facilitate the
28
+ testing of DNS software.
29
29
 
30
30
  ## ABOUT THIS RELEASE
31
31
 
32
- This is dnspython 2.7.0.
32
+ This is of `dnspython` 2.8.0.
33
33
  Please read
34
34
  [What's New](https://dnspython.readthedocs.io/en/stable/whatsnew.html) for
35
35
  information about the changes in this release.
36
36
 
37
37
  ## INSTALLATION
38
38
 
39
- * Many distributions have dnspython packaged for you, so you should
40
- check there first.
39
+ * Many distributions have dnspython packaged for you, so you should check there
40
+ first.
41
41
  * To use a wheel downloaded from PyPi, run:
42
42
 
43
+ ```
43
44
  pip install dnspython
45
+ ```
44
46
 
45
47
  * To install from the source code, go into the top-level of the source code
46
48
  and run:
@@ -51,11 +53,12 @@ information about the changes in this release.
51
53
  pip install dist/*.whl
52
54
  ```
53
55
 
54
- * To install the latest from the main branch, run `pip install git+https://github.com/rthalley/dnspython.git`
56
+ * To install the latest from the main branch, run
57
+ `pip install git+https://github.com/rthalley/dnspython.git`
55
58
 
56
- Dnspython's default installation does not depend on any modules other than
59
+ `dnspython`'s default installation does not depend on any modules other than
57
60
  those in the Python standard library. To use some features, additional modules
58
- must be installed. For convenience, pip options are defined for the
61
+ must be installed. For convenience, `pip` options are defined for the
59
62
  requirements.
60
63
 
61
64
  If you want to use DNS-over-HTTPS, run
@@ -83,10 +86,8 @@ Note that you can install any combination of the above, e.g.:
83
86
 
84
87
  ### Notices
85
88
 
86
- Python 2.x support ended with the release of 1.16.0. Dnspython 2.6.x supports
87
- Python 3.8 and later, though support for 3.8 ends on October 14, 2024.
88
- Dnspython 2.7.x supports Python 3.9 and later. Future support is aligned with the
89
- lifetime of the Python 3 versions.
89
+ Python 2.x support ended with the release of 1.16.0. `dnspython` supports Python 3.10
90
+ and later. Future support is aligned with the lifetime of the Python 3 versions.
90
91
 
91
92
  Documentation has moved to
92
93
  [dnspython.readthedocs.io](https://dnspython.readthedocs.io).
@@ -21,6 +21,8 @@ __all__ = [
21
21
  "asyncbackend",
22
22
  "asyncquery",
23
23
  "asyncresolver",
24
+ "btree",
25
+ "btreezone",
24
26
  "dnssec",
25
27
  "dnssecalgs",
26
28
  "dnssectypes",
@@ -71,7 +71,7 @@ class NullTransport:
71
71
 
72
72
 
73
73
  class Backend: # pragma: no cover
74
- def name(self):
74
+ def name(self) -> str:
75
75
  return "unknown"
76
76
 
77
77
  async def make_socket(
@@ -49,7 +49,8 @@ class _DatagramProtocol:
49
49
  self.recvfrom.set_exception(exc)
50
50
 
51
51
  def close(self):
52
- self.transport.close()
52
+ if self.transport is not None:
53
+ self.transport.close()
53
54
 
54
55
 
55
56
  async def _maybe_wait_for(awaitable, timeout):
@@ -130,7 +131,7 @@ if dns._features.have("doh"):
130
131
  import httpx
131
132
 
132
133
  _CoreAsyncNetworkBackend = httpcore.AsyncNetworkBackend
133
- _CoreAnyIOStream = httpcore._backends.anyio.AnyIOStream
134
+ _CoreAnyIOStream = httpcore._backends.anyio.AnyIOStream # pyright: ignore
134
135
 
135
136
  from dns.query import _compute_times, _expiration_for_this_attempt, _remaining
136
137
 
@@ -147,7 +148,7 @@ if dns._features.have("doh"):
147
148
  )
148
149
 
149
150
  async def connect_tcp(
150
- self, host, port, timeout, local_address, socket_options=None
151
+ self, host, port, timeout=None, local_address=None, socket_options=None
151
152
  ): # pylint: disable=signature-differs
152
153
  addresses = []
153
154
  _, expiration = _compute_times(timeout)
@@ -180,7 +181,7 @@ if dns._features.have("doh"):
180
181
  raise httpcore.ConnectError
181
182
 
182
183
  async def connect_unix_socket(
183
- self, path, timeout, socket_options=None
184
+ self, path, timeout=None, socket_options=None
184
185
  ): # pylint: disable=signature-differs
185
186
  raise NotImplementedError
186
187
 
@@ -233,7 +234,7 @@ class Backend(dns._asyncbackend.Backend):
233
234
  # proper fix for [#637].
234
235
  source = (dns.inet.any_for_af(af), 0)
235
236
  transport, protocol = await loop.create_datagram_endpoint(
236
- _DatagramProtocol,
237
+ _DatagramProtocol, # pyright: ignore
237
238
  source,
238
239
  family=af,
239
240
  proto=proto,
@@ -85,11 +85,11 @@ def force(feature: str, enabled: bool) -> None:
85
85
 
86
86
  _requirements: Dict[str, List[str]] = {
87
87
  ### BEGIN generated requirements
88
- "dnssec": ["cryptography>=43"],
89
- "doh": ["httpcore>=1.0.0", "httpx>=0.26.0", "h2>=4.1.0"],
90
- "doq": ["aioquic>=1.0.0"],
91
- "idna": ["idna>=3.7"],
92
- "trio": ["trio>=0.23"],
88
+ "dnssec": ["cryptography>=45"],
89
+ "doh": ["httpcore>=1.0.0", "httpx>=0.28.0", "h2>=4.2.0"],
90
+ "doq": ["aioquic>=1.2.0"],
91
+ "idna": ["idna>=3.10"],
92
+ "trio": ["trio>=0.30"],
93
93
  "wmi": ["wmi>=1.5.1"],
94
94
  ### END generated requirements
95
95
  }
@@ -41,7 +41,7 @@ def _immutable_init(f):
41
41
  finally:
42
42
  _in__init__.reset(previous)
43
43
 
44
- nf.__signature__ = inspect.signature(f)
44
+ nf.__signature__ = inspect.signature(f) # pyright: ignore
45
45
  return nf
46
46
 
47
47
 
@@ -0,0 +1,61 @@
1
+ import enum
2
+ from typing import Any
3
+
4
+ CERT_NONE = 0
5
+
6
+
7
+ class TLSVersion(enum.IntEnum):
8
+ TLSv1_2 = 12
9
+
10
+
11
+ class WantReadException(Exception):
12
+ pass
13
+
14
+
15
+ class WantWriteException(Exception):
16
+ pass
17
+
18
+
19
+ class SSLWantReadError(Exception):
20
+ pass
21
+
22
+
23
+ class SSLWantWriteError(Exception):
24
+ pass
25
+
26
+
27
+ class SSLContext:
28
+ def __init__(self) -> None:
29
+ self.minimum_version: Any = TLSVersion.TLSv1_2
30
+ self.check_hostname: bool = False
31
+ self.verify_mode: int = CERT_NONE
32
+
33
+ def wrap_socket(self, *args, **kwargs) -> "SSLSocket": # type: ignore
34
+ raise Exception("no ssl support") # pylint: disable=broad-exception-raised
35
+
36
+ def set_alpn_protocols(self, *args, **kwargs): # type: ignore
37
+ raise Exception("no ssl support") # pylint: disable=broad-exception-raised
38
+
39
+
40
+ class SSLSocket:
41
+ def pending(self) -> bool:
42
+ raise Exception("no ssl support") # pylint: disable=broad-exception-raised
43
+
44
+ def do_handshake(self) -> None:
45
+ raise Exception("no ssl support") # pylint: disable=broad-exception-raised
46
+
47
+ def settimeout(self, value: Any) -> None:
48
+ pass
49
+
50
+ def getpeercert(self) -> Any:
51
+ raise Exception("no ssl support") # pylint: disable=broad-exception-raised
52
+
53
+ def __enter__(self):
54
+ return self
55
+
56
+ def __exit__(self, exc_type, exc_val, exc_tb):
57
+ return False
58
+
59
+
60
+ def create_default_context(*args, **kwargs) -> SSLContext: # type: ignore
61
+ raise Exception("no ssl support") # pylint: disable=broad-exception-raised
@@ -0,0 +1,19 @@
1
+ # Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
2
+
3
+ import os
4
+ from typing import Tuple
5
+
6
+
7
+ def convert_verify_to_cafile_and_capath(
8
+ verify: bool | str,
9
+ ) -> Tuple[str | None, str | None]:
10
+ cafile: str | None = None
11
+ capath: str | None = None
12
+ if isinstance(verify, str):
13
+ if os.path.isfile(verify):
14
+ cafile = verify
15
+ elif os.path.isdir(verify):
16
+ capath = verify
17
+ else:
18
+ raise ValueError("invalid verify string")
19
+ return cafile, capath
@@ -121,7 +121,7 @@ if dns._features.have("doh"):
121
121
  self._family = family
122
122
 
123
123
  async def connect_tcp(
124
- self, host, port, timeout, local_address, socket_options=None
124
+ self, host, port, timeout=None, local_address=None, socket_options=None
125
125
  ): # pylint: disable=signature-differs
126
126
  addresses = []
127
127
  _, expiration = _compute_times(timeout)
@@ -151,13 +151,14 @@ if dns._features.have("doh"):
151
151
  sock = await Backend().make_socket(
152
152
  af, socket.SOCK_STREAM, 0, source, destination, timeout
153
153
  )
154
+ assert isinstance(sock, StreamSocket)
154
155
  return _CoreTrioStream(sock.stream)
155
156
  except Exception:
156
157
  continue
157
158
  raise httpcore.ConnectError
158
159
 
159
160
  async def connect_unix_socket(
160
- self, path, timeout, socket_options=None
161
+ self, path, timeout=None, socket_options=None
161
162
  ): # pylint: disable=signature-differs
162
163
  raise NotImplementedError
163
164
 
@@ -211,6 +212,7 @@ class Backend(dns._asyncbackend.Backend):
211
212
  if socktype == socket.SOCK_STREAM or destination is not None:
212
213
  connected = False
213
214
  with _maybe_timeout(timeout):
215
+ assert destination is not None
214
216
  await s.connect(_lltuple(destination, af))
215
217
  connected = True
216
218
  if not connected: