o
    ;i                     @   s8  d dl mZmZmZmZmZmZ d dlmZm	Z	m
Z
mZmZ G dd dZe Zeeegdf ZedZdZdZd	Zd
edefddZdedefddZdedefddZdedeeef ddfddZdedeeef ddfddZdededefddZd)d d!Zd"ed#edefd$d%Zed&d'G d(d dZ dS )*    )OptionalTypeVarCallableAnyUnioncast)	dataclassfieldfieldsreplaceis_dataclassc                   @   s   e Zd ZdefddZdS )_DefaultTypereturnc                 C   s   dS )Nz	<default> selfr   r   B/home/ubuntu/.local/lib/python3.10/site-packages/grpclib/config.py__repr__   s   z_DefaultType.__repr__N)__name__
__module____qualname__strr   r   r   r   r   r      s    r   N_ConfigurationTypei  i  @ i	validatorr   c                       dt dtdd f fdd}|S )Nnamevaluer   c                    s   |d ur | | d S d S Nr   r   r   r   r   r   proc   s   z_optional.<locals>.procr   r   )r   r    r   r   r   	_optional      r"   
validatorsc                     r   )Nr   r   r   c                    s    D ]}|| | qd S r   r   )r   r   r   r$   r   r   r       s   z_chain.<locals>.procr!   )r$   r    r   r%   r   _chain   r#   r&   typesc                     r   )Nr   r   r   c                    s6   t | sddd  D }td|  d| d S )Nz or c                 s   s    | ]}t |V  qd S r   )r   ).0tr   r   r   	<genexpr>&   s    z)_of_type.<locals>.proc.<locals>.<genexpr>"z" should be of type )
isinstancejoin	TypeError)r   r   
types_reprr'   r   r   r    $   s   
z_of_type.<locals>.procr!   )r'   r    r   r0   r   _of_type#   s   r1   r   r   c                 C   s   |dkrt d|  dd S )Nr   r+   z" should be positive
ValueErrorr   r   r   r   	_positive+      r4   c                 C   s   |dk rt d|  dd S )Nr   r+   z" should not be negativer2   r   r   r   r   _non_negative0   r5   r6   min_max_c                    s(   dt dtttf dd f fdd}|S )Nr   r   r   c                    s<   |k rt d|  d | krt d|  d  d S )Nr+   z" should be higher or equal to z" should be less or equal to r2   r   r8   r7   r   r   r    6   s
   z_range.<locals>.proc)r   r   floatint)r7   r8   r    r   r9   r   _range5   s   $r<   configConfigurationc                 C   sF   t | D ]}|jd}|d ur t| |j}|tur ||j| qd S )Nvalidate)r
   metadatagetgetattrr   _DEFAULT)r=   fvalidate_fnr   r   r   r   	_validate>   s   rF   clsmetadata_keyc                 C   sh   t | sJ i }t| D ]}t| |jtu r+||jv r!|j| }n|jd }|||j< qt| fi |S )Ndefault)r   r
   rB   r   rC   r@   r   )rG   rH   defaultsrD   rI   r   r   r   _with_defaultsG   s   


rK   T)frozenc                   @   sf  e Zd ZU eedeeeee	e
edddddZee
 ed< eddeee	e
eidZe
ed< ed	deeeidZeed
< eddeeee	eidZe	ed< eddeeee	e
eidZe
ed< eedeee	eeeidZe	ed< eedeee	eeeidZe	ed< eddZee ed< dddZdddZdddZdddZ dS )r>   Ng      @)r?   server-defaultclient-defaulttest-default)rI   r@   _keepalive_timeg      4@r?   _keepalive_timeoutF_keepalive_permit_without_calls   _http2_max_pings_without_datai,  *_http2_min_sent_ping_interval_without_datahttp2_connection_window_sizehttp2_stream_window_size)rI   ssl_target_name_overrider   c                 C   s   t |  d S r   )rF   r   r   r   r   __post_init__   s   zConfiguration.__post_init__c                 C   
   t | dS )NrM   rK   r   r   r   r   __for_server__      
zConfiguration.__for_server__c                 C   rZ   )NrN   r[   r   r   r   r   __for_client__   r]   zConfiguration.__for_client__c                 C   rZ   )NrO   r[   r   r   r   r   __for_test__   r]   zConfiguration.__for_test__)r   N)r   r>   )!r   r   r   r	   r   rC   r"   r&   r1   r;   r:   r4   rP   r   __annotations__rQ   boolrR   r6   rT   rU   _4MiBr<   _WMIN_WMAXrV   rW   rX   r   rY   r\   r^   r_   r   r   r   r   r>   V   s\   
 	



)r=   r>   r   N)!typingr   r   r   r   r   r   dataclassesr   r	   r
   r   r   r   rC   r   _ValidatorTyper   rc   rb   rd   r"   r&   typer1   r:   r;   r4   r6   r<   rF   rK   r>   r   r   r   r   <module>   s2     
		
