o
    ûÞhÆ  ã                   @  sL   d dl mZ d dlZG dd„ dƒZeƒ ZejZejZejZejZddgZ	dS )é    )ÚannotationsNc                   @  sB   e Zd ZdZddd„Zddd„Zddd„Zddd„Zddd„ZdS )Ú_HTTP2ProbeCache©Ú_lockÚ_cache_locksÚ_cache_valuesÚreturnÚNonec                 C  s   t  ¡ | _i | _i | _d S ©N)Ú	threadingÚLockr   r   r   ©Úself© r   úS/var/www/html/premium_crap/venv/lib/python3.10/site-packages/urllib3/http2/probe.pyÚ__init__   s   

z_HTTP2ProbeCache.__init__ÚhostÚstrÚportÚintúbool | Nonec              
   C  sÜ   d }| j �7 ||f}z| j| }|d ur|W W  d   ƒ S W n ty4   t ¡ | j|< d | j|< Y nw W d   ƒ n1 s?w   Y  | j| }| ¡  z| j| }W |S  tym } zt|tƒrdJ ‚| 	¡  ‚ d }~ww r
   )
r   r   ÚKeyErrorr   ÚRLockr   ÚacquireÚBaseExceptionÚ
isinstanceÚrelease)r   r   r   ÚvalueÚkeyÚkey_lockÚer   r   r   Úacquire_and_get   s4   
úþ€ù
û€ýz _HTTP2ProbeCache.acquire_and_getÚsupports_http2c                 C  sj   ||f}| j | }|� |d u r| j| d urtdƒ‚W d   ƒ n1 s%w   Y  || j|< | ¡  d S )Nz@Cannot reset HTTP/2 support for origin after value has been set.)r   r   Ú
ValueErrorr   )r   r   r   r"   r   r   r   r   r   Úset_and_release3   s   
ÿ€þ
z _HTTP2ProbeCache.set_and_releaseú"dict[tuple[str, int], bool | None]c                 C  s>   | j � dd„ | j ¡ D ƒW  d  ƒ S 1 sw   Y  dS )zUThis function is for testing purposes only. Gets the current state of the probe cachec                 S  s   i | ]\}}||“qS r   r   )Ú.0ÚkÚvr   r   r   Ú
<dictcomp>D   s    z,_HTTP2ProbeCache._values.<locals>.<dictcomp>N)r   r   Úitemsr   r   r   r   Ú_valuesA   s   $ÿz_HTTP2ProbeCache._valuesc                 C  s8   | j � i | _i | _W d  ƒ dS 1 sw   Y  dS )zBThis function is for testing purposes only. Reset the cache valuesNr   r   r   r   r   Ú_resetF   s   "þz_HTTP2ProbeCache._resetN)r   r	   )r   r   r   r   r   r   )r   r   r   r   r"   r   r   r	   )r   r%   )	Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r!   r$   r+   r,   r   r   r   r   r      s    


!
r   r$   r!   )
Ú
__future__r   r   r   Ú_HTTP2_PROBE_CACHEr$   r!   r+   r,   Ú__all__r   r   r   r   Ú<module>   s    Gþ