3
uQh=  ã               @   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-build-2nz6shyl/telethon/telethon/_updates/entitycache.pyÚ__init__   s    zEntityCache.__init__c             C   s.   || _ || _|r*||rtjntjf| j|< d S )N)r   r   r   ÚBOTÚUSERr   )r	   ÚidÚbotÚhashr
   r
   r   Úset_self_user   s    zEntityCache.set_self_userc             C   s4   y| j | \}}t|||ƒS  tk
r.   d S X d S )N)r   r   ÚKeyError)r	   r   r   Útyr
   r
   r   Úget   s
    zEntityCache.getc             C   s0   | j jdd„ |D ƒƒ | j jdd„ |D ƒƒ d S )Nc             s   s@   | ]8}t |d dƒr|j r|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   sX   | ]P}t |d dƒrt |ddƒ r|j|j|jr4tjnt |ddƒrFt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 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 )N)r   r   r   r   )r	   Úentityr
   r
   r   Úput7   s    zEntityCache.putc                s   ‡ fdd„| j 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&   r   Úretain:   s    zEntityCache.retainc             C   s
   t | jƒS )N)Ú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   