ó
    §ZÇhh[  ã                  óB  • S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
rS SKrS SKrSSKJr  SSKJrJrJr  SSKJrJrJr  SSKJrJrJr  SSKJr  S	S
KJr  \R>                  " S5      r SS jr! " S S\RD                  5      r# " S S\5      r$ " S S5      r%g)é    )ÚannotationsNé   )ÚNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolError)ÚOriginÚRequestÚResponse)ÚLockÚ	SemaphoreÚShieldCancellation)ÚTraceé   )ÚConnectionInterfacezhttpcore.http2c                ó:   • [        S U R                   5       5      $ )Nc              3  ó€   #   • U  H4  u  pUR                  5       S :H  =(       d    UR                  5       S:H  v •  M6     g7f)s   content-lengthó   transfer-encodingN)Úlower)Ú.0ÚkÚvs      ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/httpcore/_sync/http2.pyÚ	<genexpr>Ú#has_body_headers.<locals>.<genexpr>   s9   é € ð â#‰DˆAð 	
�‰‹	Ð&Ñ&×K¨!¯'©'«)Ð7KÑ*KÔKÚ#ùs   ‚<>)ÚanyÚheaders)Úrequests    r   Úhas_body_headersr      s    € Üñ à—O’Oóó ð ó    c                  ó    • \ rS rSrSrSrSrSrg)ÚHTTPConnectionStateé$   r   r   é   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚACTIVEÚIDLEÚCLOSEDÚ__static_attributes__r%   r    r   r"   r"   $   s   † Ø€FØ€DØƒFr    r"   c                  óÂ  • \ rS rSrSr\R                  R                  SS9r S!     S"S jjr	S#S jr
S$S jrS%S	 jrS%S
 jr        S&S jrS%S jr      S'S jr      S(S jr      S)S jr S!     S*S jjr    S+S jrS,S jrS-S jrS.S jrS$S jrS/S jrS0S jrS1S jrS1S jrS1S jrS1S jrS2S jrS2S jr S3S jr!   S4       S5S jjr"S r#g)6ÚHTTP2Connectioné*   é   F)Úvalidate_inbound_headersNc                ó   • Xl         X l        X0l        [        R                  R                  U R                  S9U l        [        R                  U l
        S U l        SU l        [        5       U l        [        5       U l        [        5       U l        [        5       U l        SU l        SU l        SU l        0 U l        S U l        S U l        S U l        g )N)Úconfigr   F)Ú_originÚ_network_streamÚ_keepalive_expiryÚh2Ú
connectionÚH2ConnectionÚCONFIGÚ	_h2_stater"   r+   Ú_stateÚ
_expire_atÚ_request_countr   Ú
_init_lockÚ_state_lockÚ
_read_lockÚ_write_lockÚ_sent_connection_initÚ_used_all_stream_idsÚ_connection_errorÚ_eventsÚ_connection_terminatedÚ_read_exceptionÚ_write_exception)ÚselfÚoriginÚstreamÚkeepalive_expirys       r   Ú__init__ÚHTTP2Connection.__init__.   s´   € ð ŒØ%ÔØ/?ÔÜŸ™×3Ñ3¸4¿;¹;Ð3ÐGˆŒÜ)×.Ñ.ˆŒØ(,ˆŒØˆÔÜ›&ˆŒÜ›6ˆÔÜ›&ˆŒÜ›6ˆÔØ%*ˆÔ"Ø$)ˆÔ!Ø!&ˆÔð ð 	Œð NRˆÔ#à15ˆÔØ26ˆÕr    c           
     óÌ  • U R                  UR                  R                  5      (       d/  [        SUR                  R                   SU R                   35      eU R
                     U R                  [        R                  [        R                  4;   a2  U =R                  S-  sl
        S U l        [        R                  U l        O
[        5       e S S S 5        U R                     U R                  (       d§   SU0n[        S[         X5         U R"                  " S0 UD6  S S S 5        SU l        SU l        U R,                  R.                  R0                  n[3        U5      U l        [7        X@R*                  -
  5       H  nU R4                  R9                  5         M     S S S 5        U R4                  R9                  5          U R,                  R;                  5       n/ U R<                  U'    XS.n[        S[         X5         U RG                  XS9  S S S 5        [        S	[         X5         U RI                  XS9  S S S 5        [        S
[         X5       nU RK                  XS9u  pšXš4Ul&        S S S 5        [O        W	W
[Q        XUS9SU RR                  US.S9$ ! , (       d  f       GNÌ= f! , (       d  f       GN�= f! [$         a<  n['        5          U R)                  5         S S S 5        Ue! , (       d  f       Ue= fS nAff = f! , (       d  f       GNl= f! [>        R@                  RB                   a'    SU l"        U =R                  S-  sl
        [        5       ef = f! , (       d  f       GNT= f! , (       d  f       GN== f! , (       d  f       GN= f! [$         aÅ  n['        5          SU0n[        S[         X5         U RU                  US9  S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= f[W        U[>        R@                  RX                  5      (       a1  U RZ                  (       a  []        U RZ                  5      e[_        U5      eUeS nAff = f)NzAttempted to send request to z on connection to r   r   Úsend_connection_initT©r   Ú	stream_idÚsend_request_headersÚsend_request_bodyÚreceive_response_headers©rT   s   HTTP/2)Úhttp_versionÚnetwork_streamrT   )Ústatusr   ÚcontentÚ
extensionsrT   Úresponse_closedr%   )0Úcan_handle_requestÚurlrL   ÚRuntimeErrorr5   rA   r=   r"   r*   r+   r?   r>   r   r@   rD   r   ÚloggerÚ_send_connection_initÚBaseExceptionr   ÚcloseÚ_max_streamsr<   Úlocal_settingsÚmax_concurrent_streamsr   Ú_max_streams_semaphoreÚrangeÚacquireÚget_next_available_stream_idrG   r8   Ú
exceptionsÚNoAvailableStreamIDErrorrE   Ú_send_request_headersÚ_send_request_bodyÚ_receive_responseÚreturn_valuer   ÚHTTP2ConnectionByteStreamr6   Ú_response_closedÚ
isinstanceÚProtocolErrorrH   r   r   )rK   r   Ú
sci_kwargsÚexcÚlocal_settings_max_streamsÚ_rT   ÚkwargsÚtracer[   r   s              r   Úhandle_requestÚHTTP2Connection.handle_requestU   s¶  € Ø×&Ñ& w§{¡{×'9Ñ'9×:Ñ:ô
 Ø/°·±×0BÑ0BÐ/Cð DØ—l‘l�^ð%óð ð
 ×ÓØ�{‰{Ô2×9Ñ9Ô;N×;SÑ;SÐTÓTØ×#Ò# qÑ(Õ#Ø"&�”Ü1×8Ñ8�•ä,Ó.Ð.ð ÷	 ð �_‹_Ø×-×-ð	Ø"+¨WÐ!5�JÜØ.´¸õð ×2Ò2Ñ@°ZÒ@÷ð .2�Ô*ð %&�Ô!ð —N‘N×1Ñ1×HÑHð +ô /8Ð8RÓ.S�Ô+äÐ9×<MÑ<MÑMÖN�AØ×/Ñ/×7Ñ7Ö9ñ O÷1 ð6 	×#Ñ#×+Ñ+Ô-ð	+ØŸ™×CÑCÓEˆIØ&(ˆD�L‰L˜Ñ#ð.	Ø!(ÑAˆFÜÐ-¬v°wÕGØ×*Ñ*°7Ð*ÑP÷ HäÐ*¬F°GÕDØ×'Ñ'°Ð'ÑM÷ EäØ*¬F°GôàØ"&×"8Ñ"8Ø#ð #9ð #‘�ð '-Ð%6�Ô"÷ô ØØÜ1°$È9ÑUà$-Ø&*×&:Ñ&:Ø!*ññ		ð 	÷w Öú÷ö ûô %ó Ü+Õ-ØŸ
™
œ÷ .à�I÷ .Ô-à�Iþðú÷ Ž_ûô@ �}‰}×5Ñ5ó 	+Ø(,ˆDÔ%Ø×Ò 1Ñ$ÕÜ(Ó*Ð*ð	+ú÷ HÖGúçDÖDú÷ö ûô$ ó 	Ü#Õ%Ø% yÐ1�ÜÐ,¬f°gÕFØ×)Ñ)°IÐ)Ñ>÷ G×FÖFú÷ &×%Ö%úô
 ˜#œrŸ}™}×:Ñ:×;Ñ;ð ×.×.Ü-¨d×.IÑ.IÓJÐJô )¨Ó-Ð-àˆIûð-	ús  Á&A+JÃ&LÃ9J;ÄJ)Ä!J;Ä)A6LÇ)L Ç,N ÈMÈN È*M0È:N ÉNÉ-)N Ê
J&Ê)
J8	Ê3J;Ê6LÊ8J;Ê;
LË
K<ËK*Ë 
K<Ë*
K9Ë4K<Ë<LÌLÌ
LÌAMÍ
M-Í(N Í0
M?Í:N Î
NÎN Î
Q#Î
QÎ(O1Î>OÏ	O1Ï
O%Ï!O1Ï(	QÏ1
O?	Ï;A#QÑQ#c           	     ó4  • [         R                  R                  S[         R                  R                  R                  S[         R                  R                  R
                  S[         R                  R                  R                  S0S9U R                  l        U R                  R                  [         R                  R                  R                  	 U R                  R                  5         U R                  R                  S5        U R                  U5        g)zx
The HTTP/2 connection requires some initial setup before we can start
using individual request/response streams on it.
Tr   éd   r1   )ÚclientÚinitial_valuesé   N)r8   ÚsettingsÚSettingsÚSettingCodesÚENABLE_PUSHÚMAX_CONCURRENT_STREAMSÚMAX_HEADER_LIST_SIZEr<   rg   ÚENABLE_CONNECT_PROTOCOLÚinitiate_connectionÚincrement_flow_control_windowÚ_write_outgoing_data)rK   r   s     r   rc   Ú%HTTP2Connection._send_connection_init½   sÆ   € ô )+¯©×(<Ñ(<Øô —‘×(Ñ(×4Ñ4°aä—‘×(Ñ(×?Ñ?ÀÜ—‘×(Ñ(×=Ñ=¸uðð )=ð 
)
ˆ�‰Ô%ð �N‰N×)Ñ)Ü�K‰K×$Ñ$×<Ñ<ð
ð 	�‰×*Ñ*Ô,Ø�‰×4Ñ4°UÔ;Ø×!Ñ! 'Õ*r    c                óJ  • [        U5      (       + nUR                   VVs/ s H  u  pEUR                  5       S:X  d  M  UPM     snnS   nSUR                  4SU4SUR                  R
                  4SUR                  R                  4/UR                   VVs/ s H-  u  pEUR                  5       S;  d  M  UR                  5       U4PM/     snn-   nU R                  R                  X'US9  U R                  R                  S	US
9  U R                  U5        gs  snnf s  snnf )z0
Send the request headers to a given stream ID.
ó   hostr   s   :methods
   :authoritys   :schemes   :path)r�   r   )Ú
end_streamrƒ   rX   N)r   r   r   Úmethodr`   ÚschemeÚtargetr<   Úsend_headersrŒ   r�   )rK   r   rT   r‘   r   r   Ú	authorityr   s           r   ro   Ú%HTTP2Connection._send_request_headersÞ   s  € ô *¨'Ó2Ô2ˆ
ð $+§?¢?ÔK¢?™4˜1°a·g±g³iÀ7Ñ6J—Q¡?ÒKÈAÑNˆ	ð ˜Ÿ™Ð(Ø˜IÐ&Ø˜Ÿ™×+Ñ+Ð,Ø�w—{‘{×)Ñ)Ð*ð	
ð  Ÿšô
â'‘�Ø�w‰w‹yðñó ˆQ�W‰W‹Y˜‹NÙ'ò
ñ
ˆð 	�‰×#Ñ# IÀ:Ð#ÑNØ�‰×4Ñ4°UÀiÐ4ÑPØ×!Ñ! 'Õ*ùó' Lùó
s    D¾DÂDÂ7Dc                óè   • [        U5      (       d  g[        UR                  [        R                  5      (       d   eUR                   H  nU R                  XU5        M     U R                  X5        g)z@
Iterate over the request body sending it to a given stream ID.
N)r   ru   rM   ÚtypingÚIterableÚ_send_stream_dataÚ_send_end_stream)rK   r   rT   Údatas       r   rp   Ú"HTTP2Connection._send_request_bodyý   sY   € ô   ×(Ñ(Øä˜'Ÿ.™.¬&¯/©/×:Ñ:Ð:Ð:Ø—N”NˆDØ×"Ñ" 7°tÖ<ñ #à×Ñ˜gÕ1r    c                óÚ   • U(       ad  U R                  X5      n[        [        U5      U5      nUSU X5S p6U R                  R	                  X&5        U R                  U5        U(       a  Mc  gg)z9
Send a single chunk of data in one or more data frames.
N)Ú_wait_for_outgoing_flowÚminÚlenr<   Ú	send_datar�   )rK   r   rT   r�   Úmax_flowÚ
chunk_sizeÚchunks          r   r›   Ú!HTTP2Connection._send_stream_data	  sa   € ö Ø×3Ñ3°GÓGˆHÜœS ›Y¨Ó1ˆJØ˜{ 
Ð+¨T°+Ð->�4Ø�N‰N×$Ñ$ YÔ6Ø×%Ñ% gÔ.÷ Šdr    c                ó\   • U R                   R                  U5        U R                  U5        g)zP
Send an empty data frame on on a given stream ID with the END_STREAM flag set.
N)r<   r‘   r�   )rK   r   rT   s      r   rœ   Ú HTTP2Connection._send_end_stream  s$   € ð 	�‰×!Ñ! )Ô,Ø×!Ñ! 'Õ*r    c                ój  •  U R                  X5      n[        U[        R                  R                  5      (       a  OM=  Sn/ nUR
                  c   eUR
                   HP  u  pgUS:X  a  [        UR                  SSS95      nM&  UR                  S5      (       a  M>  UR                  Xg45        MR     XE4$ )zD
Return the response status code and headers for a given stream ID.
éÈ   s   :statusÚasciiÚignore)Úerrorsó   :)
Ú_receive_stream_eventru   r8   ÚeventsÚResponseReceivedr   ÚintÚdecodeÚ
startswithÚappend)rK   r   rT   ÚeventÚstatus_coder   r   r   s           r   rq   Ú!HTTP2Connection._receive_response  s¨   € ð Ø×.Ñ.¨wÓBˆEÜ˜%¤§¡×!;Ñ!;×<Ñ<Øñ ð
 ˆØˆØ�}‰}Ñ(Ð(Ð(Ø—M”M‰DˆAØ�J‹Ü! !§(¡(¨7¸8 (Ð"DÓE’Ø—\‘\ $×'Ó'Ø—‘ ˜vÖ&ñ	 "ð Ð%Ð%r    c              #  ó¢  #   •  U R                  X5      n[        U[        R                  R                  5      (       ae  UR
                  c   eUR                  c   eUR
                  nU R                  R                  XB5        U R                  U5        UR                  v •  O*[        U[        R                  R                  5      (       a  gMË  7f)zM
Iterator that returns the bytes of the response body for a given stream ID.
N)r°   ru   r8   r±   ÚDataReceivedÚflow_controlled_lengthr�   r<   Úacknowledge_received_datar�   ÚStreamEnded)rK   r   rT   r·   Úamounts        r   Ú_receive_response_bodyÚ&HTTP2Connection._receive_response_body5  s§   é € ð Ø×.Ñ.¨wÓBˆEÜ˜%¤§¡×!7Ñ!7×8Ñ8Ø×3Ñ3Ñ?Ð?Ð?Ø—z‘zÑ-Ð-Ð-Ø×5Ñ5�Ø—‘×8Ñ8¸ÔKØ×)Ñ)¨'Ô2Ø—j‘jÓ Ü˜E¤2§9¡9×#8Ñ#8×9Ñ9Øñ ùs   ‚CCc                óP  • U R                   R                  U5      (       d3  U R                  X5        U R                   R                  U5      (       d  M3  U R                   U   R                  S5      n[	        U[
        R                  R                  5      (       a  [        U5      eU$ )zk
Return the next available event for a given stream ID.

Will read more data from the network if required.
r   )	rG   ÚgetÚ_receive_eventsÚpopru   r8   r±   ÚStreamResetr   )rK   r   rT   r·   s       r   r°   Ú%HTTP2Connection._receive_stream_eventG  s~   € ð —,‘,×"Ñ" 9×-Ñ-Ø× Ñ  Ô4ð —,‘,×"Ñ" 9×-Ó-à—‘˜YÑ'×+Ñ+¨AÓ.ˆÜ�eœRŸY™Y×2Ñ2×3Ñ3Ü% eÓ,Ð,Øˆr    c           	     ó‚  • U R                      U R                  b]  U R                  R                  nU(       a+  U(       a$  X#:”  a  U =R                  S-  sl        [	        5       e[        U R                  5      eUb!  U R                  R                  U5      (       Gdg  U R                  U5      nU GHO  n[        U[        R                  R                  5      (       a3  [        S[        U5       nU R                  U5        XVl        SSS5        M`  [        U[        R                  R"                  [        R                  R$                  [        R                  R&                  [        R                  R(                  45      (       aH  UR*                  U R                  ;   a+  U R                  UR*                     R-                  U5        GM  GM  [        U[        R                  R.                  5      (       d  GMI  XPl        GMR     SSS5        U R1                  U5        g! , (       d  f       GM~  = f! , (       d  f       N3= f)zX
Read some data from the network until we see one or more events
for a given stream ID.
Nr   Úreceive_remote_settings)rB   rH   Úlast_stream_idr?   r   r   rG   rÃ   Ú_read_incoming_dataru   r8   r±   ÚRemoteSettingsChangedr   rb   Ú_receive_remote_settings_changerr   r²   r»   r¾   rÆ   rT   r¶   ÚConnectionTerminatedr�   )rK   r   rT   rÊ   r±   r·   r|   s          r   rÄ   ÚHTTP2Connection._receive_eventsV  sŸ  € ð �_‹_Ø×*Ñ*Ñ6Ø!%×!<Ñ!<×!KÑ!K�Þ¦°IÓ4NØ×'Ò'¨1Ñ,Õ'Ü0Ó2Ð2Ü)¨$×*EÑ*EÓFÐFð Ñ ¨¯©×(8Ñ(8¸×(CÒ(CØ×1Ñ1°'Ó:�Ü#�EÜ! %¬¯©×)HÑ)H×IÑIÜ"Ø5´v¸wôà"Ø ×@Ñ@ÀÔGØ16Ô.÷	ñ ô $ØäŸI™I×6Ñ6ÜŸI™I×2Ñ2ÜŸI™I×1Ñ1ÜŸI™I×1Ñ1ð	÷ñ ð !Ÿ?™?¨d¯l©lÓ:Ø ŸL™L¨¯©Ñ9×@Ñ@À×Gò ;ô $ E¬2¯9©9×+IÑ+I×JÔJØ6;×3ñ+ $÷! ðN 	×!Ñ! 'Õ*÷+÷ ú÷% �_ús+   �C H0Ã-HÄC.H0Ç8H0È
H-È'	H0È0
H>c                ód  • UR                   R                  [        R                  R                  R
                  5      nU(       aì  [        UR                  U R                  R                  R                  5      nU(       a°  X0R                  :w  a   X0R                  :”  a@  U R                  R                  5         U =R                  S-  sl        X0R                  :”  a  M@  X0R                  :  aA  U R                  R                  5         U =R                  S-  sl        X0R                  :  a  M@  g g g g g )Nr   )Úchanged_settingsrÃ   r8   r„   r†   rˆ   r¡   Ú	new_valuer<   rg   rh   rf   ri   Úreleaserk   )rK   r·   rh   Únew_max_streamss       r   rÍ   Ú/HTTP2Connection._receive_remote_settings_change†  sò   € ð "'×!7Ñ!7×!;Ñ!;Ü�K‰K×$Ñ$×;Ñ;ó"
Ðö "Ü!Ø&×0Ñ0Ø—‘×-Ñ-×DÑDóˆOö  ?×6GÑ6GÓ#GØ%×(9Ñ(9Ó9Ø×/Ñ/×7Ñ7Ô9Ø×%Ò%¨Ñ*Õ%ð &×(9Ñ(9Õ9ð &×(9Ñ(9Ó9Ø×/Ñ/×7Ñ7Ô9Ø×%Ò%¨Ñ*Õ%ð &×(9Ñ(9×9ð	 $Hˆð "r    c                ó8  • U R                   R                  5         U R                  U	 U R                     U R                  (       a"  U R                  (       d  U R                  5         OšU R                  [        R                  :X  a|  U R                  (       dk  [        R                  U l        U R                  b(  [        R                  " 5       nX R                  -   U l        U R                  (       a  U R                  5         S S S 5        g ! , (       d  f       g = f©N)ri   rÓ   rG   rA   rH   re   r=   r"   r*   r+   r7   ÚtimeÚ	monotonicr>   rE   )rK   rT   Únows      r   rt   Ú HTTP2Connection._response_closed™  s­   € Ø×#Ñ#×+Ñ+Ô-Ø�L‰L˜Ð#Ø×ÓØ×*×*°4·<·<Ø—
‘
•à—‘Ô 3× :Ñ :Ó:À4Ç<Ç<Ü1×6Ñ6�”Ø×)Ñ)Ñ5ÜŸ.š.Ó*�CØ&)×,BÑ,BÑ&B�D”OØ×,×,Ø—J‘J”L÷ ×Öús   ´CDÄ
Dc                ó–   • U R                   R                  5         [        R                  U l        U R
                  R                  5         g r×   )r<   Úclose_connectionr"   r,   r=   r6   re   ©rK   s    r   re   ÚHTTP2Connection.close¨  s3   € ð 	�‰×'Ñ'Ô)Ü)×0Ñ0ˆŒØ×Ñ×"Ñ"Õ$r    c                ó~  • UR                   R                  S0 5      nUR                  SS 5      nU R                  b  U R                  e U R                  R	                  U R
                  U5      nUS:X  a  [        S5      e U R                  R                  U5      nU$ ! [         a  nXPl        SU l        UeS nAff = f)NÚtimeoutÚreadr    zServer disconnectedT)r]   rÃ   rI   r6   râ   ÚREAD_NUM_BYTESr   Ú	ExceptionrF   r<   Úreceive_data)rK   r   Útimeoutsrá   r�   rx   r±   s          r   rË   Ú#HTTP2Connection._read_incoming_data±  s¿   € Ø×%Ñ%×)Ñ)¨)°RÓ8ˆØ—,‘,˜v tÓ,ˆà×ÑÑ+Ø×&Ñ&Ð&ð	Ø×'Ñ'×,Ñ,¨T×-@Ñ-@À'ÓJˆDØ�s‹{Ü)Ð*?Ó@Ð@ð ð )-¯©×(CÑ(CÀDÓ(Iˆàˆøô ó 	ð $'Ô Ø%)ˆDÔ"ØˆIûð	ús   Á	7B Â
B<Â(B7Â7B<c                óŽ  • UR                   R                  S0 5      nUR                  SS 5      nU R                     U R                  R	                  5       nU R
                  b  U R
                  e U R                  R                  XC5         S S S 5        g ! [         a  nXPl        SU l	        UeS nAff = f! , (       d  f       g = f)Nrá   ÚwriteT)
r]   rÃ   rC   r<   Údata_to_sendrJ   r6   ré   rä   rF   )rK   r   ræ   rá   rê   rx   s         r   r�   Ú$HTTP2Connection._write_outgoing_dataÍ  s®   € Ø×%Ñ%×)Ñ)¨)°RÓ8ˆØ—,‘,˜w¨Ó-ˆà×ÓØŸ>™>×6Ñ6Ó8ˆLà×$Ñ$Ñ0Ø×+Ñ+Ð+ðØ×$Ñ$×*Ñ*¨<ÕA÷ Ðøô ó ð ),Ô%Ø)-�Ô&Ø�	ûðú÷ Õús)   »4B6Á0BÂ
B3ÂB.Â.B3Â3B6Â6
Cc                ó4  • U R                   R                  U5      nU R                   R                  n[        X45      nUS:X  aU  U R	                  U5        U R                   R                  U5      nU R                   R                  n[        X45      nUS:X  a  MU  U$ )zä
Returns the maximum allowable outgoing flow for a given stream.

If the allowable flow is zero, then waits on the network until
WindowUpdated frames have increased the flow rate.
https://tools.ietf.org/html/rfc7540#section-6.9
r   )r<   Úlocal_flow_control_windowÚmax_outbound_frame_sizer¡   rÄ   )rK   r   rT   Ú
local_flowÚmax_frame_sizeÚflows         r   r    Ú'HTTP2Connection._wait_for_outgoing_flowè  sƒ   € ð Ÿ.™.×BÑBÀ9ÓMˆ
Ø"Ÿn™n×DÑDˆÜ�:Ó.ˆØ�a‹iØ× Ñ  Ô)ØŸ™×AÑAÀ)ÓLˆJØ!Ÿ^™^×CÑCˆNÜ�zÓ2ˆDð	 �a�ið
 ˆr    c                ó   • XR                   :H  $ r×   )r5   ©rK   rL   s     r   r_   Ú"HTTP2Connection.can_handle_requestü  s   € ØŸ™Ñ%Ð%r    c                ó8  • U R                   [        R                  :g  =(       aw    U R                  (       + =(       a_    U R                  (       + =(       aG    U R
                  R                  R                  [        R                  R                  R                   :X  + $ r×   )r=   r"   r,   rF   rE   r<   Ústate_machineÚstater8   r9   ÚConnectionStaterÞ   s    r   Úis_availableÚHTTP2Connection.is_availableÿ  ss   € à�K‰KÔ.×5Ñ5Ñ5÷ Ø×*Ñ*Ô*÷à×-Ñ-Ô-÷ð —‘×,Ñ,×2Ñ2Ü—=‘=×0Ñ0×7Ñ7ð8òð		
r    c                ór   • [         R                  " 5       nU R                  S L=(       a    XR                  :„  $ r×   )rØ   rÙ   r>   )rK   rÚ   s     r   Úhas_expiredÚHTTP2Connection.has_expired
  s)   € Ü�nŠnÓˆØ�‰ dÐ*×D¨s·_±_Ñ/DÐDr    c                ó<   • U R                   [        R                  :H  $ r×   )r=   r"   r+   rÞ   s    r   Úis_idleÚHTTP2Connection.is_idle  s   € Ø�{‰{Ô1×6Ñ6Ñ6Ð6r    c                ó<   • U R                   [        R                  :H  $ r×   )r=   r"   r,   rÞ   s    r   Ú	is_closedÚHTTP2Connection.is_closed  s   € Ø�{‰{Ô1×8Ñ8Ñ8Ð8r    c                ó~   • [        U R                  5      nU< SU R                  R                   SU R                   3$ )Nz
, HTTP/2, ú, Request Count: )Ústrr5   r=   Únamer?   rô   s     r   ÚinfoÚHTTP2Connection.info  sA   € Ü�T—\‘\Ó"ˆà‰j˜
 4§;¡;×#3Ñ#3Ð"4ð 5Ø"×1Ñ1Ð2ð4ð	
r    c           	     ó´   • U R                   R                  n[        U R                  5      nSU SU< SU R                  R
                   SU R                   S3	$ )NÚ<z [z, r  z]>)Ú	__class__r&   r  r5   r=   r  r?   )rK   Ú
class_namerL   s      r   Ú__repr__ÚHTTP2Connection.__repr__  sZ   € Ø—^‘^×,Ñ,ˆ
Ü�T—\‘\Ó"ˆà�
ˆ|˜2˜f™Z r¨$¯+©+×*:Ñ*:Ð);ð <Ø"×1Ñ1Ð2°"ð6ð	
r    c                ó   • U $ r×   r%   rÞ   s    r   Ú	__enter__ÚHTTP2Connection.__enter__&  s   € Øˆr    c                ó$   • U R                  5         g r×   )re   )rK   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__ÚHTTP2Connection.__exit__)  s   € ð 	�
‰
�r    )rF   rH   rG   r>   r<   r@   r7   rf   ri   r6   r5   rI   rB   r?   rD   r=   rA   rE   rJ   rC   r×   )rL   r	   rM   r   rN   zfloat | None)r   r
   Úreturnr   )r   r
   r  ÚNone)r   r
   rT   r³   r  r  )r   r
   rT   r³   r�   Úbytesr  r  )r   r
   rT   r³   r  z%tuple[int, list[tuple[bytes, bytes]]])r   r
   rT   r³   r  útyping.Iterator[bytes])r   r
   rT   r³   r  zKh2.events.ResponseReceived | h2.events.DataReceived | h2.events.StreamEnded)r   r
   rT   z
int | Noner  r  )r·   zh2.events.RemoteSettingsChangedr  r  )rT   r³   r  r  ©r  r  )r   r
   r  zlist[h2.events.Event])r   r
   rT   r³   r  r³   )rL   r	   r  Úbool)r  r  )r  r  )r  r/   )NNN)r  ztype[BaseException] | Noner  zBaseException | Noner  ztypes.TracebackType | Noner  r  )$r&   r'   r(   r)   rã   r8   r4   ÚH2Configurationr;   rO   r}   rc   ro   rp   r›   rœ   rq   rÀ   r°   rÄ   rÍ   rt   re   rË   r�   r    r_   rú   rý   r   r  r	  r  r  r  r-   r%   r    r   r/   r/   *   s’  † Ø€NØ�Y‰Y×&Ñ&ÀÐ&ÐF€Fð *.ð	%7àð%7ð ð%7ð 'õ	%7ôNfôP+ôB+ô>
2ð/Øð/Ø+.ð/Ø6;ð/à	ô/ô+ð&Øð&Ø+.ð&à	.ô&ð,ØðØ+.ðà	ôð$ØðØ+.ðà	Tôð  9=ð.+Øð.+Ø+5ð.+à	õ.+ð`+Ø4ð+à	ô+ô&!ô%ôô8ô6ô(&ô	
ôEô7ô9ô
ô
ôð
 04Ø*.Ø04ð	à,ðð (ðð .ð	ð
 
÷ð r    r/   c                  óB   • \ rS rSr        SS jrSS jrS	S jrSrg)
rs   i2  c                ó6   • Xl         X l        X0l        SU l        g )NF)Ú_connectionÚ_requestÚ
_stream_idÚ_closed)rK   r9   r   rT   s       r   rO   Ú"HTTP2ConnectionByteStream.__init__3  s   € ð &ÔØŒØ#ŒØˆ�r    c              #  ó°  #   • U R                   U R                  S.n [        S[        U R                   U5         U R                  R                  U R                   U R                  S9 H  nUv •  M	     S S S 5        g ! , (       d  f       g = f! [         a<  n[        5          U R                  5         S S S 5        Ue! , (       d  f       Ue= fS nAff = f7f)NrS   Úreceive_response_body)	r$  r%  r   rb   r#  rÀ   rd   r   re   )rK   r{   r¦   rx   s       r   Ú__iter__Ú"HTTP2ConnectionByteStream.__iter__;  s©   é € Ø!Ÿ]™]¸¿¹ÑIˆð	ÜÐ.´¸¿¹ÀvÕNØ!×-Ñ-×DÑDØ ŸM™M°T·_±_ð Eó �Eð  ”Kñ÷ O×NÖNûô
 ó 	ô $Õ%Ø—
‘
”÷ &àˆI÷ &Ô%àˆIþð	üsc   ‚C�B ¹:A<Á3B Á;CÁ<
B
ÂB Â	CÂ
B Â
CÂ
CÂ!B<Â2
CÂ<
C	ÃCÃCÃCc                ó  • U R                   (       d^  SU l         SU R                  0n[        S[        U R                  U5         U R
                  R                  U R                  S9  S S S 5        g g ! , (       d  f       g = f)NTrT   r^   rX   )r&  r%  r   rb   r$  r#  rt   )rK   r{   s     r   re   ÚHTTP2ConnectionByteStream.closeK  sd   € Ø�|�|ØˆDŒLØ! 4§?¡?Ð3ˆFÜÐ(¬&°$·-±-ÀÕHØ× Ñ ×1Ñ1¸D¿O¹OÐ1ÑL÷ IÐHð ÷ IÕHús   Á$A1Á1
A?)r&  r#  r$  r%  N)r9   r/   r   r
   rT   r³   r  r  )r  r  r  )r&   r'   r(   r)   rO   r*  re   r-   r%   r    r   rs   rs   2  s2   † ðØ)ðØ4;ðØHKðà	ôô÷ Mr    rs   )r   r
   r  r  )&Ú
__future__r   ÚenumÚloggingrØ   Útypesr™   Ú	h2.configr8   Úh2.connectionÚ	h2.eventsÚh2.exceptionsÚh2.settingsÚ_backends.baser   Ú_exceptionsr   r   r   Ú_modelsr	   r
   r   Ú_synchronizationr   r   r   Ú_tracer   Ú
interfacesr   Ú	getLoggerrb   r   ÚIntEnumr"   r/   rs   r%   r    r   Ú<module>r?     s‰   ðÝ "ã Û Û Û Û ã Û Û Û Û å *÷ñ ÷
 0Ñ /ß BÑ BÝ Ý +à	×	Ò	Ð+Ó	,€ôô˜$Ÿ,™,ô ôEÐ)ô E÷PMò Mr    