grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a àMÒe #ã@s"dZddlZddlZddlZddlZddlZddlZddlZej dkZ dd„Z Gdd„dƒZ dd „Z Gd d „d ejjƒZGd d „d ejjƒZej d¡�rddlZddlZddlZddlZejZejjjZddlmZmZmZGdd„deƒZ Gdd„dej!ƒZ"nejj#Z"Gdd„dejj$ƒZ$dS)zasyncio library query supportéNÚwin32cCs*z t ¡WSty$t ¡YS0dS©N)ÚasyncioZget_running_loopÚAttributeErrorZget_event_loop©rrú8/usr/lib/python3.9/site-packages/dns/_asyncio_backend.pyÚ_get_running_loops  rc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú_DatagramProtocolcCsd|_d|_dSr)Ú transportÚrecvfrom©ÚselfrrrÚ__init__sz_DatagramProtocol.__init__cCs ||_dSr)r )r r rrrÚconnection_madesz!_DatagramProtocol.connection_madecCs$|jr |j ¡s |j ||f¡dSr)r ÚdoneZ set_result)r ÚdataZaddrrrrÚdatagram_received sz#_DatagramProtocol.datagram_receivedcCs |jr|j ¡s|j |¡dSr)r rÚ set_exception)r ÚexcrrrÚerror_received$sz _DatagramProtocol.error_receivedc Csd|jr`|j ¡s`|durTzt‚Wq`tyP}z|j |¡WYd}~q`d}~00n |j |¡dSr)r rÚEOFErrorr)r rÚerrrÚconnection_lost(s$z!_DatagramProtocol.connection_lostcCs|j ¡dSr)r Úcloser rrrr3sz_DatagramProtocol.closeN) Ú__name__Ú __module__Ú __qualname__rrrrrrrrrrr s  r cÃsP|durBzt ||¡IdHWStjy>tjj|d�‚YqL0n |IdHSdS)N)Útimeout)rÚwait_forÚ TimeoutErrorÚdnsÚ exceptionZTimeout)Ú awaitablerrrrÚ_maybe_wait_for7s r#csLeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z ‡Z S)ÚDatagramSocketcstƒ |¡||_||_dSr)Úsuperrr Úprotocol)r Úfamilyr r&©Ú __class__rrrBs zDatagramSocket.__init__cÃs|j ||¡t|ƒSr)r ÚsendtoÚlen)r ÚwhatÚ destinationrrrrr*GszDatagramSocket.sendtocÃsTtƒ ¡}z:|jjdusJ‚||j_t||ƒIdH| ¡Wd|j_Sd|j_0dSr)rZ create_futurer&r r#Úresult)r Úsizerrrrrr Ls þzDatagramSocket.recvfromcÃs|j ¡dSr)r&rr rrrrWszDatagramSocket.closecÃs |j d¡S©NZpeername©r Úget_extra_infor rrrÚ getpeernameZszDatagramSocket.getpeernamecÃs |j d¡S©NZsocknamer1r rrrÚ getsockname]szDatagramSocket.getsocknamecÃst‚dSr©ÚNotImplementedError©r rrrrÚ getpeercert`szDatagramSocket.getpeercert) rrrrr*r rr3r5r9Ú __classcell__rrr(rr$As  r$c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)Ú StreamSocketcCs||_||_||_dSr)r'ÚreaderÚwriter)r Úafr<r=rrrreszStreamSocket.__init__cÃs"|j |¡t|j ¡|ƒIdHSr)r=Úwriter#Zdrain)r r,rrrrÚsendalljs zStreamSocket.sendallcÃst|j |¡|ƒIdHSr)r#r<Úread)r r/rrrrÚrecvnszStreamSocket.recvcÃs|j ¡dSr)r=rr rrrrqszStreamSocket.closecÃs |j d¡Sr0©r=r2r rrrr3tszStreamSocket.getpeernamecÃs |j d¡Sr4rCr rrrr5wszStreamSocket.getsocknamecÃs |j d¡S)NZpeercertrCr8rrrr9zszStreamSocket.getpeercertN) rrrrr@rBrr3r5r9rrrrr;dsr;Zdoh)Ú_compute_timesÚ_expiration_for_this_attemptÚ _remainingcs8eZdZ‡fdd„Zd dd„Zd dd„Zdd „Z‡ZS) Ú_NetworkBackendcs6tƒ ¡||_||_||_||_|dkr2tdƒ‚dS)Nrz9the asyncio transport for HTTPX cannot set the local port)r%rZ _local_portÚ _resolverÚ_bootstrap_addressÚ_familyr7)r ÚresolverÚ local_portÚbootstrap_addressr'r(rrrŠs ÿz_NetworkBackend.__init__Nc Ãsg}t|ƒ\}}tj |¡r(| |¡nV|jdur@| |j¡n>t|ƒ}|j} |r^tj |¡} |j j || |d�IdH} |   ¡}|D]x} z`t d|ƒ} t| ƒ}t  |¡�&t j| ||d�IdH} Wdƒn1sÐ0Yt| ƒWStyøYq‚0q‚tj‚dS)N)r'Zlifetimeg@)Z remote_hostZ remote_portZ local_host)rDr ÚinetZ is_addressÚappendrIrFrJZaf_for_addressrHÚ resolve_nameÚ addressesrEÚanyioZ fail_afterÚ connect_tcpÚ_CoreAnyIOStreamÚ ExceptionÚhttpcoreZ ConnectError)r ÚhostÚportrZ local_addressÚsocket_optionsrQÚ_Z expirationr'ZanswersZaddressZattempt_expirationÚstreamrrrrS•s8     ÿ   ý* z_NetworkBackend.connect_tcpcÃst‚dSrr6)r ÚpathrrYrrrÚconnect_unix_socket¶sz#_NetworkBackend.connect_unix_socketcÃst |¡IdHdSr)rRÚsleep)r Zsecondsrrrr^»sz_NetworkBackend.sleep)N)N)rrrrrSr]r^r:rrr(rrG‰s  ÿ "ÿ rGcs*eZdZdddejdœ‡fdd„ Z‡ZS)Ú_HTTPTransportrN)rLrMrKr'csB|durddl}|j ¡}tƒj|i|¤Žt||||ƒ|j_dS)Nr)Zdns.asyncresolverZ asyncresolverZResolverr%rrGZ_poolZ_network_backend)r rLrMrKr'ÚargsÚkwargsr r(rrr¿s  ÿz_HTTPTransport.__init__)rrrÚsocketZ AF_UNSPECrr:rrr(rr_¾s úr_c@s>eZdZdd„Zddd„Zdd„Zd d „Zd d „Zd d„ZdS)ÚBackendcCsdS)Nrrr rrrÚname×sz Backend.namerNc  ÃsÂtƒ} |tjkrVtr,|dur,tj |¡df}| jt||||d�IdH\} } t || | ƒS|tj kr¬|durpt dƒ‚t t j|d|d|||||d�|ƒIdH\} } t|| | ƒStdd|›�ƒ‚dS)Nr)r'ÚprotoZ remote_addrz'destination required for stream socketsé)Zsslr'reZ local_addrÚserver_hostnamezunsupported socket ztype )rrbZ SOCK_DGRAMÚ _is_win32r rNZ any_for_afZcreate_datagram_endpointr r$Z SOCK_STREAMÚ ValueErrorr#rZopen_connectionr;r7)r r>ZsocktypereÚsourcer-rZ ssl_contextrgZloopr r&ÚrÚwrrrÚ make_socketÚs>   û  ù ö  ÿzBackend.make_socketcÃst |¡IdHdSr)rr^)r Úintervalrrrr^ sz Backend.sleepcCsdS)NFrr rrrÚdatagram_connection_required sz$Backend.datagram_connection_requiredcCstSr)r_r rrrÚget_transport_classszBackend.get_transport_classcÃst||ƒIdHSr)r#)r r"rrrrrszBackend.wait_for)rNNNNN) rrrrdrmr^rorprrrrrrcÖs÷ /rc)%Ú__doc__rrbÚsysZdns._asyncbackendr Z dns._featuresZ dns.exceptionZdns.inetÚplatformrhrr r#Z _asyncbackendr$r;Z _featuresZhaverRrVZhttpcore._backends.anyioZhttpxZAsyncNetworkBackendZ_CoreAsyncNetworkBackendZ _backendsZ AnyIOStreamrTZ dns.queryrDrErFrGZAsyncHTTPTransportr_Z NullTransportrcrrrrÚs2  # 5