# Copyright (c) 2018 gevent contributors. See LICENSE for details. import _socket class Resolver(object): """ A resolver that directly uses the system's resolver functions. .. caution:: This resolver is *not* cooperative. This resolver has the lowest overhead of any resolver and typically approaches the speed of the unmodified :mod:`socket` functions. However, it is not cooperative, so if name resolution blocks, the entire thread and all its greenlets will be blocked. This can be useful during debugging, or it may be a good choice if your operating system provides a good caching resolver (such as macOS's Directory Services) that is usually very fast and functionally non-blocking. .. versionchanged:: 1.3a2 This was previously undocumented and existed in :mod:`gevent.socket`. """ def __init__(self, hub=None): pass def close(self): pass for method in ( 'gethostbyname', 'gethostbyname_ex', 'getaddrinfo', 'gethostbyaddr', 'getnameinfo' ): locals()[method] = staticmethod(getattr(_socket, method))