import ssl import sys import idna __version__ = '1.1.0' real_match_hostname = ssl.match_hostname PY_370 = sys.version_info >= (3, 7, 0) def patched_match_hostname(cert, hostname): try: hostname = idna.encode(hostname, uts46=True).decode('ascii') except UnicodeError: hostname = hostname.encode('idna').decode('ascii') return real_match_hostname(cert, hostname) def patch_match_hostname(): if PY_370: return if hasattr(ssl.match_hostname, 'patched'): return ssl.match_hostname = patched_match_hostname ssl.match_hostname.patched = True def reset_match_hostname(): if PY_370: return if not hasattr(ssl.match_hostname, 'patched'): return ssl.match_hostname = real_match_hostname