
    h8'h	                         d Z ddlmZ  G d de      Z e       Z e       Z e       Z e       Z	 e       Z
 G d de      Zy)z.
Provide django-style hooks for model events.
    )Modelc                   6    e Zd Zd Zd ZddZd	dZddZd Zy)
Signalc                 $    | j                          y N)_flushselfs    M/var/www/html/trade_iq/venv/lib/python3.12/site-packages/playhouse/signals.py__init__zSignal.__init__   s        c                 0    t               | _        g | _        y r   )set
_receivers_receiver_listr	   s    r   r   zSignal._flush   s    % r   Nc                     |xs |j                   }||f}|| j                  vr:| j                  j                  |       | j                  j	                  |||f       y t        d|d|xs dd      )Nreceiver named z (for sender=anyz) already connected)__name__r   addr   append
ValueError)r
   receivernamesenderkeys        r   connectzSignal.connect   st    (x((Vndoo%OO$&&h'?@,0&/E/C D Dr   c                 8   |r|xs |j                   }|st        d      ||f}|| j                  vrt        d|d|xs dd      | j                  j                  |       | j                  D cg c]  \  }}}||f|k7  r|||f c}}}| _        y c c}}}w )Nz%a receiver or a name must be providedr   z for sender=r   z not found.)r   r   r   remover   )r
   r   r   r   r   nrss           r   
disconnectzSignal.disconnect   s    ,8,,DDEEVndoo%"FOeO5 6 6 	s#8<8K8K 1 1WQ1#$a&C- !"1ay 1 1s   3Bc                       fd}|S )Nc                 .    j                  |        | S r   )r   )fnr   r
   r   s    r   	decoratorz"Signal.__call__.<locals>.decorator)   s    LLT6*Ir    )r
   r   r   r'   s   ``` r   __call__zSignal.__call__(   s    	 r   c           	          t        |      }g }| j                  D ]3  \  }}}|t        ||      s|j                  | |||g|i |f       5 |S r   )typer   
isinstancer   )	r
   instanceargskwargsr   	responsesr    r!   r"   s	            r   sendzSignal.send.   sg    h	** 	LGAq!yJx3  !Qvx%I$%I&%I!JK	L r   )NN)NNN)	r   
__module____qualname__r   r   r   r#   r)   r1   r(   r   r   r   r      s!    !D1r   r   c                   2     e Zd Z fdZ fdZ fdZ xZS )r   c                 V    t        t        | 
  |i | t        j	                  |        y r   )superr   r   pre_initr1   )r
   r.   r/   	__class__s      r   r   zModel.__init__?   s#    eT#T4V4dr   c                    | j                   j                  r| j                  nd}|j                  dd      xs t	        |       }t
        j                  | |       t        t        | &  |i |}t        j                  | |       |S )NTforce_insertF)created)_metaprimary_key_pkgetboolpre_saver1   r6   r   save	post_save)r
   r.   r/   pk_valuer;   retr8   s         r   rB   z
Model.saveC   sq    #zz554884**^U3I4>7IdG,E4%t6v6tW-
r   c                     t         j                  |        t        t        |   |i |}t
        j                  |        |S r   )
pre_deleter1   r6   r   delete_instancepost_delete)r
   r.   r/   rE   r8   s       r   rH   zModel.delete_instanceK   s8    E40$A&A
r   )r   r2   r3   r   rB   rH   __classcell__)r8   s   @r   r   r   >   s     r   r   N)__doc__peeweer   _Modelobjectr   rA   rC   rG   rI   r7   r(   r   r   <module>rO      sM    #-V -` 8H	X
h8F r   