a
    y{Jh                     @   sx   d dl Z d dlmZmZmZmZ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)AnyIteratorOptionalTupleTypeno_type_check)TelegramObjectc                   @   s   e Zd ZdZdee ee ddddZedddd	Zeee dd
dZ	dddddZ
deddddZedddZeZdeee edddZeedddZed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   C/var/www/shaz/venv/lib/python3.9/site-packages/aiogram/fsm/state.py__init__   s    zState.__init__zType[StatesGroup]r   c                 C   s   | j std| j S )NzThis state is not in any group.)r   RuntimeErrorr   r   r   r   group   s    zState.groupc                 C   sV   | j d u s| j dkr| j S | jd u r4| jr4| jj}n| jrB| j}nd}| d| j  S )N*@:)r   r   r   __full_group_name__r   r   r   r   r   r
      s    
zState.state)r   r   c                 C   s   t |tstd|| _d S )Nz%Group must be subclass of StatesGroup)
issubclassStatesGroup
ValueErrorr   r   r   r   r   
set_parent%   s    
zState.set_parent)ownernamer   c                 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__/   s    zState.__str__event	raw_stater   c                 C   s   | j dkrdS || j kS )Nr   Tr'   r   r*   r+   r   r   r   __call__4   s    
zState.__call__)otherr   c                 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__9   s
    

zState.__eq__c                 C   s
   t | jS r   )hashr
   r   r   r   r   __hash__@   s    zState.__hash__)NN)N)__name__
__module____qualname____doc__r   r1   r   propertyr   r
   r!   r$   r(   __repr__r   boolr-   r   r3   intr5   r   r   r   r   r	      s   r	   c                       s   e Zd ZU ded< ded< eedf ed< eedf ed< e fdd	Ze	ed
ddZ
e	eed df d
ddZe	eedf d
ddZe	eedf d
ddZeedddZed
ddZee d
ddZ  ZS )StatesGroupMetazOptional[Type[StatesGroup]]
__parent__zTuple[Type[StatesGroup], ...]
__childs__.
__states____state_names__c           	         s   t t| | |||}g }g }| D ]B\}}t|trD|| q&t|r&t	|t
r&|| ||_q&d |_t||_t||_tdd |D |_|S )Nc                 s   s   | ]}|j V  qd S r   r'   .0r
   r   r   r   	<genexpr>[       z*StatesGroupMeta.__new__.<locals>.<genexpr>)superr>   __new__itemsr/   r	   appendinspectisclassr   r   r?   tupler@   rA   rB   )	mcsr#   bases	namespacekwargsclsZstatesZchildsargr0   r   r   rH   J   s    



zStatesGroupMeta.__new__r   c                 C   s    | j rd| j j| jfS | jS )N.)r?   joinr   r6   rR   r   r   r   r   _   s    z#StatesGroupMeta.__full_group_name__r   c                 C   s    | j }| j D ]}||j 7 }q|S r   )r@   )rR   resultchildr   r   r   __all_childs__e   s    
zStatesGroupMeta.__all_childs__c                 C   s    | j }| jD ]}||j7 }q|S r   )rA   r@   __all_states__)rR   rX   r   r   r   r   r[   l   s    
zStatesGroupMeta.__all_states__c                 C   s   t dd | jD S )Nc                 s   s   | ]}|j r|j V  qd S r   r'   rC   r   r   r   rE   u   rF   z7StatesGroupMeta.__all_states_names__.<locals>.<genexpr>)rM   r[   rW   r   r   r   __all_states_names__s   s    z$StatesGroupMeta.__all_states_names__)itemr   c                 C   s@   t |tr|| jv S t |tr(|| jv S t |tr<|| jv S dS )NF)r/   r1   r\   r	   r[   r>   rZ   )rR   r]   r   r   r   __contains__w   s    





zStatesGroupMeta.__contains__c                 C   s   d| j  dS )Nz<StatesGroup 'r&   )r   r   r   r   r   r(      s    zStatesGroupMeta.__str__c                 C   s
   t | jS r   )iterr[   r   r   r   r   __iter__   s    zStatesGroupMeta.__iter__)r6   r7   r8   __annotations__r   r	   r1   r   rH   r:   r   r   rZ   r[   r\   r   r<   r^   r(   r   r`   __classcell__r   r   rT   r   r>   D   s"   
	r>   c                   @   sH   e Zd Zeed  dddZd
eee e	dddZ
eddd	ZdS )r   r   c                 C   s   | j d u r| S | j  S r   )r?   get_rootrW   r   r   r   rc      s    
zStatesGroup.get_rootNr)   c                 C   s   |t | jv S r   )typer\   r,   r   r   r   r-      s    zStatesGroup.__call__c                 C   s   dt | j S )NzStatesGroup )rd   r   r   r   r   r   r(      s    zStatesGroup.__str__)N)r6   r7   r8   classmethodr   rc   r   r   r1   r<   r-   r(   r   r   r   r   r      s   r   )	metaclassr   r'   )rK   typingr   r   r   r   r   r   Zaiogram.typesr   r	   rd   r>   r   Zdefault_stateZ	any_stater   r   r   r   <module>   s    =C