U
    ¯ªh=  ã                   @   s(   d dl mZmZ eƒ ZG dd„ dƒZdS )é   )Ú
EntityTypeÚEntityc                   @   s^   e Zd Zeddfeeedœdd„Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚEntityCacheN)Úhash_mapÚself_idÚself_botc                 C   s"   |t kri n|| _|| _|| _d S ©N)Ú	_sentinelr   r   r   )Úselfr   r   r   © r   úA/tmp/pip-unpacked-wheel-c81u5j2r/telethon/_updates/entitycache.pyÚ__init__   s    zEntityCache.__init__c                 C   s.   || _ || _|r*||rtjntjf| j|< d S r   )r   r   r   ÚBOTÚUSERr   )r
   ÚidÚbotÚhashr   r   r   Úset_self_user   s    zEntityCache.set_self_userc                 C   s8   z| j | \}}t|||ƒW S  tk
r2   Y d S X d S r   )r   r   ÚKeyError)r
   r   r   Útyr   r   r   Úget   s
    zEntityCache.getc                 C   s0   | j  dd„ |D ƒ¡ | j  dd„ |D ƒ¡ d S )Nc                 s   s>   | ]6}t |d dƒr|js|j|j|jr,tjntjffV  qdS )Úaccess_hashN)ÚgetattrÚminr   r   r   r   r   r   )Ú.0Úur   r   r   Ú	<genexpr>!   s    ûþz%EntityCache.extend.<locals>.<genexpr>c                 s   sV   | ]N}t |d dƒrt |ddƒs|j|j|jr2tjnt |ddƒrDtjntjffV  qdS )r   Nr   Z	gigagroup)r   r   r   Z	megagroupr   Z	MEGAGROUPZ	GIGAGROUPZCHANNEL)r   Úcr   r   r   r   )   s    ùý)r   Úupdate)r
   ZusersZchatsr   r   r   Úextend   s    ûùzEntityCache.extendc                 C   s   dd„ | j  ¡ D ƒS )Nc                 S   s    g | ]\}\}}t |||ƒ‘qS r   )r   )r   r   r   r   r   r   r   Ú
<listcomp>5   s    
 z0EntityCache.get_all_entities.<locals>.<listcomp>©r   Úitems©r
   r   r   r   Úget_all_entities4   s    zEntityCache.get_all_entitiesc                 C   s   |j |jf| j|j< d S r   )r   r   r   r   )r
   Úentityr   r   r   Úput7   s    zEntityCache.putc                    s   ‡ fdd„| j  ¡ D ƒ| _ d S )Nc                    s   i | ]\}}ˆ |ƒr||“qS r   r   )r   ÚkÚv©Úfilterr   r   Ú
<dictcomp>;   s       z&EntityCache.retain.<locals>.<dictcomp>r!   )r
   r*   r   r)   r   Úretain:   s    zEntityCache.retainc                 C   s
   t | jƒS r   )Úlenr   r#   r   r   r   Ú__len__=   s    zEntityCache.__len__)Ú__name__Ú
__module__Ú__qualname__r	   ÚdictÚintÚboolr   r   r   r   r$   r&   r,   r.   r   r   r   r   r      s   üü
r   N)Úsessionr   r   Úobjectr	   r   r   r   r   r   Ú<module>   s   