o
    4˜Žj  ã                   @   st   d dl Z d dlmZ d dlmZmZ d dlmZ G dd„ dƒZG dd„ de	ƒZ
G d	d
„ d
e
d�Zeƒ Zedd�ZdS )é    N)ÚIterator)ÚAnyÚno_type_check)ÚTelegramObjectc                   @   sÂ   e Zd ZdZddedB dedB ddfdd„Zed d	d
„ƒZededB fdd„ƒZd!dd„Z	dddeddfdd„Z
defdd„ZeZd"dededB defdd„Zdedefdd„Zdefdd„ZdS )#ÚStatez
    State object
    NÚstateÚ
group_nameÚreturnc                 C   s   || _ || _d | _d S ©N)Ú_stateÚ_group_nameÚ_group)Úselfr   r   © r   úN/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/aiogram/fsm/state.pyÚ__init__   s   
zState.__init__útype[StatesGroup]c                 C   s   | j s	d}t|ƒ‚| j S )NzThis state is not in any group.)r   ÚRuntimeError)r   Úmsgr   r   r   Úgroup   s   zState.groupc                 C   sV   | j d u s
| j dkr| j S | jd u r| jr| jj}n	| jr!| j}nd}|› d| j › �S )NÚ*ú@ú:)r   r   r   Ú__full_group_name__)r   r   r   r   r   r      s   
zState.stater   c                 C   s    t |tƒsd}t|ƒ‚|| _d S )Nz%Group must be subclass of StatesGroup)Ú
issubclassÚStatesGroupÚ
ValueErrorr   )r   r   r   r   r   r   Ú
set_parent'   s   

zState.set_parentÚownerÚnamec                 C   s   | j d u r|| _ |  |¡ d S r
   )r   r   )r   r   r   r   r   r   Ú__set_name__-   s   
zState.__set_name__c                 C   s   d| j pd› d�S )Nz<State 'Ú ú'>©r   ©r   r   r   r   Ú__str__2   s   zState.__str__ÚeventÚ	raw_statec                 C   s   | j dkrdS || j kS )Nr   Tr#   ©r   r&   r'   r   r   r   Ú__call__7   s   

zState.__call__Úotherc                 C   s0   t || jƒr| j|jkS t |tƒr| j|kS tS r
   )Ú
isinstanceÚ	__class__r   ÚstrÚNotImplemented)r   r*   r   r   r   Ú__eq__<   s
   

zState.__eq__c                 C   ó
   t | jƒS r
   )Úhashr   r$   r   r   r   Ú__hash__C   ó   
zState.__hash__)NN)r	   r   )r   r   r	   Nr
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   r   Úpropertyr   r   r   r    r%   Ú__repr__r   Úboolr)   Úobjectr/   Úintr2   r   r   r   r   r      s     
r   c                       s>  e Zd ZU ed dB ed< eed df ed< eedf ed< eedf ed< eed df ed< eedf ed	< eedf ed
< e‡ fdd„ƒZ	e
defdd„ƒZded ded fdd„Zdeed df fdd„Zdeedf fdd„Zdeedf fdd„Zdedefdd„Zdefdd„Zdee fdd„Z‡  ZS ) ÚStatesGroupMetar   NÚ
__parent__.Ú
__childs__Ú
__states__Ú__state_names__Ú__all_childs__Ú__all_states__Ú__all_states_names__c           
         s¶   t ƒ  | |||¡}g }g }| ¡ D ]!}t|tƒr| |¡ qt |¡r2t|t	ƒr2| 
|¡}	| |	¡ qd |_t|ƒ|_t|ƒ|_tdd„ |D ƒƒ|_| ¡ |_| ¡ |_| ¡ |_|S )Nc                 s   s   � | ]}|j V  qd S r
   r#   ©Ú.0r   r   r   r   Ú	<genexpr>a   s   € z*StatesGroupMeta.__new__.<locals>.<genexpr>)ÚsuperÚ__new__Úvaluesr+   r   ÚappendÚinspectÚisclassr   r   Ú_prepare_childr>   Útupler?   r@   rA   Ú_get_all_childsrB   Ú_get_all_statesrC   Ú_get_all_states_namesrD   )
Úmcsr   ÚbasesÚ	namespaceÚkwargsÚclsÚstatesÚchildsÚargÚchild©r,   r   r   rI   P   s$   


€




zStatesGroupMeta.__new__r	   c                 C   s    | j r| j j› d| j› �S | jS )NÚ.)r>   r   r4   ©rW   r   r   r   r   m   s   z#StatesGroupMeta.__full_group_name__r[   c                 C   s   | |_ | ¡ |_|S )aŽ  Prepare child.

        While adding `cls` for its children, we also need to recalculate
        the parameter `__all_states_names__` for each child
        `StatesGroup`. Since the child class appears before the
        parent, at the time of adding the parent, the child's
        `__all_states_names__` is already recorded without taking into
        account the name of current parent.
        )r>   rR   rD   )rW   r[   r   r   r   rN   s   s   

zStatesGroupMeta._prepare_childc                 C   s    | j }| j D ]}||j 7 }q|S r
   )r?   )rW   Úresultr[   r   r   r   rP   �   ó   
zStatesGroupMeta._get_all_childsc                 C   s    | j }| jD ]}||j7 }q|S r
   )r@   r?   rC   )rW   r_   r   r   r   r   rQ   ‡   r`   zStatesGroupMeta._get_all_statesc                 C   s   t dd„ | jD ƒƒS )Nc                 s   s   � | ]	}|j r|j V  qd S r
   r#   rE   r   r   r   rG   Ž   s   € z8StatesGroupMeta._get_all_states_names.<locals>.<genexpr>)rO   rC   r^   r   r   r   rR   �   s   z%StatesGroupMeta._get_all_states_namesÚitemc                 C   s@   t |tƒr
|| jv S t |tƒr|| jv S t |tƒr|| jv S dS )NF)r+   r-   rD   r   rC   r=   rB   )rW   ra   r   r   r   Ú__contains__�   s   





zStatesGroupMeta.__contains__c                 C   s   d| j › d�S )Nz<StatesGroup 'r"   )r   r$   r   r   r   r%   ™   ó   zStatesGroupMeta.__str__c                 C   r0   r
   )ÚiterrC   r$   r   r   r   Ú__iter__œ   r3   zStatesGroupMeta.__iter__)r4   r5   r6   ÚtypeÚ__annotations__rO   r   r-   r   rI   r8   r   rN   rP   rQ   rR   r   r:   rb   r%   r   re   Ú__classcell__r   r   r\   r   r=   G   s&   
 	r=   c                   @   sL   e Zd Zeded  fdd„ƒZddededB defdd„Z	defd	d
„Z
dS )r   r	   c                 C   s   | j d u r| S | j  ¡ S r
   )r>   Úget_rootr^   r   r   r   ri   ¡   s   

zStatesGroup.get_rootNr&   r'   c                 C   s   |t | ƒjv S r
   )rf   rD   r(   r   r   r   r)   §   rc   zStatesGroup.__call__c                 C   s   dt | ƒj› �S )NzStatesGroup )rf   r   r$   r   r   r   r%   ª   s   zStatesGroup.__str__r
   )r4   r5   r6   Úclassmethodrf   ri   r   r-   r:   r)   r%   r   r   r   r   r       s
    r   )Ú	metaclassr   r#   )rL   Úcollections.abcr   Útypingr   r   Úaiogram.typesr   r   rf   r=   r   Údefault_stateÚ	any_stater   r   r   r   Ú<module>   s    ?Y