--- /dev/null
+from typing import Optional, Union, Dict, Generator, Any
+from . import tsig, rdatatype, rdataclass, name, message, asyncbackend
+
+# If the ssl import works, then
+#
+# error: Name 'ssl' already defined (by an import)
+#
+# is expected and can be ignored.
+try:
+ import ssl
+except ImportError:
+ class ssl: # type: ignore
+ SSLContext : Dict = {}
+
+async def udp(q : message.Message, where : str,
+ timeout : Optional[float] = None, port=53,
+ source : Optional[str] = None, source_port : Optional[int] = 0,
+ ignore_unexpected : Optional[bool] = False,
+ one_rr_per_rrset : Optional[bool] = False,
+ ignore_trailing : Optional[bool] = False,
+ sock : Optional[asyncbackend.DatagramSocket] = None,
+ backend : Optional[asyncbackend.Backend]) -> message.Message:
+ pass
+
+async def tcp(q : message.Message, where : str, timeout : float = None, port=53,
+ af : Optional[int] = None, source : Optional[str] = None,
+ source_port : Optional[int] = 0,
+ one_rr_per_rrset : Optional[bool] = False,
+ ignore_trailing : Optional[bool] = False,
+ sock : Optional[asyncbackend.StreamSocket] = None,
+ backend : Optional[asyncbackend.Backend]) -> message.Message:
+ pass
+
+async def tls(q : message.Message, where : str,
+ timeout : Optional[float] = None, port=53,
+ source : Optional[str] = None, source_port : Optional[int] = 0,
+ one_rr_per_rrset : Optional[bool] = False,
+ ignore_trailing : Optional[bool] = False,
+ sock : Optional[asyncbackend.StreamSocket] = None,
+ backend : Optional[asyncbackend.Backend],
+ ssl_context: Optional[ssl.SSLContext] = None,
+ server_hostname: Optional[str] = None) -> message.Message:
+ pass
--- /dev/null
+from typing import Union, Optional, List, Any, Dict
+from . import exception, rdataclass, name, rdatatype, asyncbackend
+
+async def resolve(qname : str, rdtype : Union[int,str] = 0,
+ rdclass : Union[int,str] = 0,
+ tcp=False, source=None, raise_on_no_answer=True,
+ source_port=0, lifetime : Optional[float]=None,
+ search : Optional[bool]=None,
+ backend : Optional[asyncbackend.Backend]=None):
+ ...
+async def resolve_address(self, ipaddr: str,
+ *args: Any, **kwargs: Optional[Dict]):
+ ...
+
+class Resolver:
+ def __init__(self, filename : Optional[str] = '/etc/resolv.conf',
+ configure : Optional[bool] = True):
+ self.nameservers : List[str]
+ async def resolve(self, qname : str, rdtype : Union[int,str] = rdatatype.A,
+ rdclass : Union[int,str] = rdataclass.IN,
+ tcp : bool = False, source : Optional[str] = None,
+ raise_on_no_answer=True, source_port : int = 0,
+ lifetime : Optional[float]=None,
+ search : Optional[bool]=None,
+ backend : Optional[asyncbackend.Backend]=None):
+ ...