def __init__(self, resolv=None, servers=None, timeout=(1, 3, 11, 45), reactor=None):
        """
        Construct a resolver which will query domain name servers listed in
        the C{resolv.conf(5)}-format file given by C{resolv} as well as
        those in the given C{servers} list.  Servers are queried in a
        round-robin fashion.  If given, C{resolv} is periodically checked
        for modification and re-parsed if it is noticed to have changed.

        @type servers: C{list} of C{(str, int)} or L{None}
        @param servers: If not None, interpreted as a list of (host, port)
            pairs specifying addresses of domain name servers to attempt to use
            for this lookup.  Host addresses should be in IPv4 dotted-quad
            form.  If specified, overrides C{resolv}.

        @type resolv: C{str}
        @param resolv: Filename to read and parse as a resolver(5)
            configuration file.

        @type timeout: Sequence of C{int}
        @param timeout: Default number of seconds after which to reissue the
            query.  When the last timeout expires, the query is considered
            failed.

        @param reactor: A provider of L{IReactorTime}, L{IReactorUDP}, and
            L{IReactorTCP} which will be used to establish connections, listen
            for DNS datagrams, and enforce timeouts.  If not provided, the
            global reactor will be used.

        @raise ValueError: Raised if no nameserver addresses can be found.
        """
        common.ResolverBase.__init__(self)

        if reactor is None:
            from twisted.internet import reactor
        self._reactor = reactor

        self.timeout = timeout

        if servers is None:
            self.servers = []
        else:
            self.servers = servers

        self.resolv = resolv

        if not len(self.servers) and not resolv:
            raise ValueError("No nameservers specified")

        self.factory = DNSClientFactory(self, timeout)
        self.factory.noisy = 0   # Be quiet by default

        self.connections = []
        self.pending = []

        self._waiting = {}

        self.maybeParseConfig()

        Construct a resolver which will query domain name servers listed in
        the C{resolv.conf(5)}-format file given by C{resolv} as well as
        those in the given C{servers} list.  Servers are queried in a
        round-robin fashion.  If given, C{resolv} is periodically checked
        for modification and re-parsed if it is noticed to have changed.

        @type servers: C{list} of C{(str, int)} or L{None}
        @param servers: If not None, interpreted as a list of (host, port)
            pairs specifying addresses of domain name servers to attempt to use
            for this lookup.  Host addresses should be in IPv4 dotted-quad
            form.  If specified, overrides C{resolv}.

        @type resolv: C{str}
        @param resolv: Filename to read and parse as a resolver(5)
            configuration file.

        @type timeout: Sequence of C{int}
        @param timeout: Default number of seconds after which to reissue the
            query.  When the last timeout expires, the query is considered
            failed.

        @param reactor: A provider of L{IReactorTime}, L{IReactorUDP}, and
            L{IReactorTCP} which will be used to establish connections, listen
            for DNS datagrams, and enforce timeouts.  If not provided, the
            global reactor will be used.

        @raise ValueError: Raised if no nameserver addresses can be found.
        
stackoverflow/venv/lib/python3.6/site-packages/twisted/names/client.py