
    F˝i                         d dl Z d dlmZ d dlmZmZ d dlmZ  G d d      Z G d de	      Z
 G d	 d
e
      Z e       Z ed      Zy)    N)Iterator)Anyno_type_check)TelegramObjectc                       e Zd ZdZddedz  dedz  ddfdZedd       Zededz  fd	       Zdd
Z	dddeddfdZ
defdZeZddededz  defdZdedefdZdefdZy)Statez
    State object
    Nstate
group_namereturnc                 .    || _         || _        d | _        y N)_state_group_name_group)selfr	   r
   s      J/home/leshdev/mybot/venv/lib/python3.12/site-packages/aiogram/fsm/state.py__init__zState.__init__   s    %04    type[StatesGroup]c                 L    | j                   sd}t        |      | j                   S )NzThis state is not in any group.)r   RuntimeError)r   msgs     r   groupzState.group   s#    {{3Cs##{{r   c                    | j                   | j                   dk(  r| j                   S | j                  #| j                  r| j                  j                  }n| j                  r| j                  }nd}| d| j                    S )N*@:)r   r   r   __full_group_name__)r   r   s     r   r	   zState.state   sp    ;;$++"4;;#KK33E$$EE$++''r   c                 L    t        |t              sd}t        |      || _        y )Nz%Group must be subclass of StatesGroup)
issubclassStatesGroup
ValueErrorr   )r   r   r   s      r   
set_parentzState.set_parent'   s"    %-9CS/!r   ownernamec                 L    | j                   || _         | j                  |       y r   )r   r#   )r   r$   r%   s      r   __set_name__zState.__set_name__-   s    ;;DKr   c                 *    d| j                   xs d dS )Nz<State ' '>r	   r   s    r   __str__zState.__str__2   s    $***+2..r   event	raw_statec                 @    | j                   dk(  ry|| j                   k(  S )Nr   Tr+   r   r.   r/   s      r   __call__zState.__call__7   s     ::DJJ&&r   otherc                     t        || j                        r| j                  |j                  k(  S t        |t              r| j                  |k(  S t        S r   )
isinstance	__class__r	   strNotImplemented)r   r3   s     r   __eq__zState.__eq__<   sB    eT^^,::,,eS!::&&r   c                 ,    t        | j                        S r   )hashr	   r,   s    r   __hash__zState.__hash__C   s    DJJr   )NN)r   r   )r   r   r   Nr   )__name__
__module____qualname____doc__r7   r   propertyr   r	   r#   r'   r-   __repr__r   boolr2   objectr9   intr<    r   r   r   r      s    5cDj 5S4Z 5SW 5
   (sTz ( ("5 S T 
/ / H'n 't 't '
F t  #  r   r   c                   l    e Zd ZU ed   dz  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       Z	e
defd       Zded   ded   fdZdeed   df   fdZdeedf   fdZdeedf   fdZdedefdZdefdZdee   fdZ xZS )StatesGroupMetar!   N
__parent__.
__childs__
__states____state_names____all_childs____all_states____all_states_names__c                 .   t         
|   | |||      }g }g }|j                         D ]m  }t        |t              r|j                  |       %t        j                  |      s;t        |t              sL|j                  |      }	|j                  |	       o d |_        t        |      |_        t        |      |_        t        d |D              |_        |j!                         |_        |j%                         |_        |j)                         |_        |S )Nc              3   4   K   | ]  }|j                     y wr   r+   .0r	   s     r   	<genexpr>z*StatesGroupMeta.__new__.<locals>.<genexpr>a   s     #DEEKK#Ds   )super__new__valuesr5   r   appendinspectisclassr    r!   _prepare_childrI   tuplerJ   rK   rL   _get_all_childsrM   _get_all_statesrN   _get_all_states_namesrO   )mcsr%   bases	namespacekwargsclsstateschildsargchildr6   s             r   rV   zStatesGroupMeta.__new__P   s    goc4	:##% 	%C#u%c"%*S+*F**3/e$	% vv##DV#DD 002 002
 $'#<#<#> 
r   r   c                 |    | j                   r%| j                   j                   d| j                   S | j                  S )N.)rI   r   r=   rd   s    r   r   z#StatesGroupMeta.__full_group_name__m   s3    >>nn8893<<.II||r   rh   c                 >    | |_         |j                         |_        |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.
        )rI   r_   rO   )rd   rh   s     r   r[   zStatesGroupMeta._prepare_childs   s"     %*%@%@%B"r   c                 ^    | j                   }| j                   D ]  }||j                   z  } |S r   )rJ   )rd   resultrh   s      r   r]   zStatesGroupMeta._get_all_childs   s3    ^^ 	'Ee&&&F	'r   c                 ^    | j                   }| j                  D ]  }||j                  z  } |S r   )rK   rJ   rN   )rd   rn   r   s      r   r^   zStatesGroupMeta._get_all_states   s3    ^^ 	+Ee***F	+r   c                 :    t        d | j                  D              S )Nc              3   N   K   | ]  }|j                   s|j                     y wr   r+   rR   s     r   rT   z8StatesGroupMeta._get_all_states_names.<locals>.<genexpr>   s     PUEKKU[[Ps   %%)r\   rN   rk   s    r   r_   z%StatesGroupMeta._get_all_states_names   s    Pc.@.@PPPr   itemc                     t        |t              r|| j                  v S t        |t              r|| j                  v S t        |t
              r|| j                  v S y)NF)r5   r7   rO   r   rN   rH   rM   )rd   rr   s     r   __contains__zStatesGroupMeta.__contains__   sV    dC 33333dE"3----dO,3----r   c                 "    d| j                    dS )Nz<StatesGroup 'r*   )r   r,   s    r   r-   zStatesGroupMeta.__str__   s     8 89<<r   c                 ,    t        | j                        S r   )iterrN   r,   s    r   __iter__zStatesGroupMeta.__iter__   s    D''((r   )r=   r>   r?   type__annotations__r\   r   r7   r   rV   rA   r   r[   r]   r^   r_   r   rC   rt   r-   r   rx   __classcell__)r6   s   @r   rH   rH   G   s6   ]#d**d=)3.//eSj!!38_$$}-s233%*%%S/) 8 C  
4#6 4;N d=&93&> ? eSj 1 QeCHo Q  = =)(5/ )r   rH   c                   P    e Zd Zeded    fd       Zddededz  defdZ	defdZ
y)	r!   r   c                 R    | j                   | S | j                   j                         S r   )rI   get_rootrk   s    r   r~   zStatesGroup.get_root   s$    >>!J~~&&((r   Nr.   r/   c                 0    |t        |       j                  v S r   )ry   rO   r1   s      r   r2   zStatesGroup.__call__   s    DJ;;;;r   c                 2    dt        |       j                   S )NzStatesGroup )ry   r   r,   s    r   r-   zStatesGroup.__str__   s    d4j<<=>>r   r   )r=   r>   r?   classmethodry   r~   r   r7   rC   r2   r-   rF   r   r   r!   r!      sJ    )m, ) )
<n <t <t <? ?r   r!   )	metaclassr   r+   )rY   collections.abcr   typingr   r   aiogram.typesr   r   ry   rH   r!   default_state	any_staterF   r   r   <module>r      sJ     $ % (<  < ~V)d V)r?O ? 	r   