a Me #@s"dZddlZddlZddlZddlZddlZddlZddlZej dkZ ddZ GdddZ dd Z Gd d d ejjZGd d d ejjZejdrddlZddlZddlZddlZejZejjjZddlmZmZmZGdddeZ Gdddej!Z"nejj#Z"Gdddejj$Z$dS)zasyncio library query supportNwin32cCs*z tWSty$tYS0dSN)asyncioZget_running_loopAttributeErrorZget_event_looprr8/usr/lib/python3.9/site-packages/dns/_asyncio_backend.py_get_running_loops  rc@s<eZdZddZddZddZddZd d Zd d Zd S)_DatagramProtocolcCsd|_d|_dSr) transportrecvfromselfrrr__init__sz_DatagramProtocol.__init__cCs ||_dSr)r )r r rrrconnection_madesz!_DatagramProtocol.connection_madecCs$|jr |js |j||fdSr)r doneZ set_result)r dataZaddrrrrdatagram_received sz#_DatagramProtocol.datagram_receivedcCs |jr|js|j|dSr)r r set_exception)r excrrrerror_received$sz _DatagramProtocol.error_receivedc Csd|jr`|js`|durTztWq`tyP}z|j|WYd}~q`d}~00n |j|dSr)r rEOFErrorr)r rerrrconnection_lost(s$z!_DatagramProtocol.connection_lostcCs|jdSr)r closer rrrr3sz_DatagramProtocol.closeN) __name__ __module__ __qualname__rrrrrrrrrrr s  r csP|durBzt||IdHWStjy>tjj|dYqL0n |IdHSdS)N)timeout)rwait_for TimeoutErrordns exceptionZTimeout) awaitablerrrr_maybe_wait_for7s r#csLeZdZfddZddZddZddZd d Zd d Zd dZ Z S)DatagramSocketcst|||_||_dSr)superrr protocol)r familyr r& __class__rrrBs zDatagramSocket.__init__cs|j||t|Sr)r sendtolen)r what destinationrrrrr*GszDatagramSocket.sendtocsTt}z:|jjdusJ||j_t||IdH|Wd|j_Sd|j_0dSr)rZ create_futurer&r r#result)r sizerrrrrr Ls zDatagramSocket.recvfromcs|jdSr)r&rr rrrrWszDatagramSocket.closecs |jdSNZpeernamer get_extra_infor rrr getpeernameZszDatagramSocket.getpeernamecs |jdSNZsocknamer1r rrr getsockname]szDatagramSocket.getsocknamecstdSrNotImplementedErrorr rrrr getpeercert`szDatagramSocket.getpeercert) rrrrr*r rr3r5r9 __classcell__rrr(rr$As  r$c@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) StreamSocketcCs||_||_||_dSr)r'readerwriter)r afr<r=rrrreszStreamSocket.__init__cs"|j|t|j|IdHSr)r=writer#Zdrain)r r,rrrrsendalljs zStreamSocket.sendallcst|j||IdHSr)r#r<read)r r/rrrrrecvnszStreamSocket.recvcs|jdSr)r=rr rrrrqszStreamSocket.closecs |jdSr0r=r2r rrrr3tszStreamSocket.getpeernamecs |jdSr4rCr rrrr5wszStreamSocket.getsocknamecs |jdS)NZpeercertrCr8rrrr9zszStreamSocket.getpeercertN) rrrrr@rBrr3r5r9rrrrr;dsr;Zdoh)_compute_times_expiration_for_this_attempt _remainingcs8eZdZfddZd ddZd ddZdd ZZS) _NetworkBackendcs6t||_||_||_||_|dkr2tddS)Nrz9the asyncio transport for HTTPX cannot set the local port)r%rZ _local_port _resolver_bootstrap_address_familyr7)r resolver local_portbootstrap_addressr'r(rrrs z_NetworkBackend.__init__Nc sg}t|\}}tj|r(||nV|jdur@||jn>t|}|j} |r^tj|} |j j || |dIdH} | }|D]x} z`t d|} t| }t |&t j| ||dIdH} Wdn1s0Yt| WStyYq0qtjdS)N)r'Zlifetimeg@)Z remote_hostZ remote_portZ local_host)rDr inetZ is_addressappendrIrFrJZaf_for_addressrH resolve_name addressesrEanyioZ fail_after connect_tcp_CoreAnyIOStream ExceptionhttpcoreZ ConnectError)r hostportrZ local_addresssocket_optionsrQ_Z expirationr'ZanswersZaddressZattempt_expirationstreamrrrrSs8        * z_NetworkBackend.connect_tcpcstdSrr6)r pathrrYrrrconnect_unix_socketsz#_NetworkBackend.connect_unix_socketcst|IdHdSr)rRsleep)r Zsecondsrrrr^sz_NetworkBackend.sleep)N)N)rrrrrSr]r^r:rrr(rrGs  " rGcs*eZdZdddejdfdd ZZS)_HTTPTransportrN)rLrMrKr'csB|durddl}|j}tj|i|t|||||j_dS)Nr)Zdns.asyncresolverZ asyncresolverZResolverr%rrGZ_poolZ_network_backend)r rLrMrKr'argskwargsr r(rrrs  z_HTTPTransport.__init__)rrrsocketZ AF_UNSPECrr:rrr(rr_s r_c@s>eZdZddZdddZddZd d Zd d Zd dZdS)BackendcCsdS)Nrrr rrrnamesz Backend.namerNc  st} |tjkrVtr,|dur,tj|df}| jt||||dIdH\} } t || | S|tj kr|durpt dt t j|d|d|||||d|IdH\} } t|| | Stdd|dS)Nr)r'protoZ remote_addrz'destination required for stream sockets)Zsslr'reZ local_addrserver_hostnamezunsupported socket ztype )rrbZ SOCK_DGRAM _is_win32r rNZ any_for_afZcreate_datagram_endpointr r$Z SOCK_STREAM ValueErrorr#rZopen_connectionr;r7)r r>Zsocktyperesourcer-rZ ssl_contextrgZloopr r&rwrrr make_sockets>        zBackend.make_socketcst|IdHdSr)rr^)r intervalrrrr^ sz Backend.sleepcCsdS)NFrr rrrdatagram_connection_required sz$Backend.datagram_connection_requiredcCstSr)r_r rrrget_transport_classszBackend.get_transport_classcst||IdHSr)r#)r r"rrrrrszBackend.wait_for)rNNNNN) rrrrdrmr^rorprrrrrrcs /rc)%__doc__rrbsysZdns._asyncbackendr Z dns._featuresZ dns.exceptionZdns.inetplatformrhrr r#Z _asyncbackendr$r;Z _featuresZhaverRrVZhttpcore._backends.anyioZhttpxZAsyncNetworkBackendZ_CoreAsyncNetworkBackendZ _backendsZ AnyIOStreamrTZ dns.queryrDrErFrGZAsyncHTTPTransportr_Z NullTransportrcrrrrs2  # 5