
    Vi	                         S r SSKJr   " S S\5      r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
 " S S\5      rg)z.
Provide django-style hooks for model events.
    )Modelc                   D    \ rS rSrS rS rS
S jrSS jrS
S jrS r	S	r
g)Signal   c                 $    U R                  5         g N)_flushselfs    d/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/playhouse/signals.py__init__Signal.__init__   s        c                 0    [        5       U l        / U l        g r   )set
_receivers_receiver_listr
   s    r   r	   Signal._flush   s    % r   Nc                     U=(       d    UR                   nX#4nX@R                  ;  a9  U R                  R                  U5        U R                  R	                  X!U45        g [        SU< SU=(       d    S< S35      e)Nreceiver named z (for sender=anyz) already connected)__name__r   addr   append
ValueError)r   receivernamesenderkeys        r   connectSignal.connect   sn    (x((noo%OO$&&'?@,0&/E/C D Dr   c                 j   U(       a  U=(       d    UR                   nU(       d  [        S5      eX#4nX@R                  ;  a  [        SU< SU=(       d    S< S35      eU R                  R                  U5        U R                   VVVs/ s H  u  pVnXW4U:w  d  M  XVU4PM     snnnU l        g s  snnnf )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   
disconnectSignal.disconnect   s    ,8,,DDEEnoo%"FOeO5 6 6 	s#8<8K8K 18KWQ1#$&C-  )ay8K 1 1s   	B.B.c                    ^ ^^ UU U4S jnU$ )Nc                 .   > TR                  U TT5        U $ r   )r    )fnr   r   r   s    r   	decorator"Signal.__call__.<locals>.decorator)   s    LLT6*Ir    )r   r   r   r,   s   ``` r   __call__Signal.__call__(   s    	 r   c           	          [        U5      n/ nU R                   H7  u  pgnUb  [        X5      (       d  M  UR                  Xw" XA/UQ70 UD645        M9     U$ r   )typer   
isinstancer   )	r   instanceargskwargsr   	responsesr$   r%   r&   s	            r   sendSignal.send.   s]    h	**GA!yJx33  !Qv%I$%I&%I!JK + r   )r   r   )NN)NNN)r   
__module____qualname____firstlineno__r   r	   r    r'   r/   r8   __static_attributes__r.   r   r   r   r      s!    !D1r   r   c                   @   ^  \ rS rSrU 4S jrU 4S jrU 4S jrSrU =r$ )r   >   c                 X   > [         [        U ]
  " U0 UD6  [        R	                  U 5        g r   )superr   r   pre_initr8   )r   r5   r6   	__class__s      r   r   Model.__init__?   s#    eT#T4V4dr   c                    > U R                   R                  (       a  U R                  OSnUR                  SS5      =(       d    [	        U5      (       + n[
        R                  XS9  [        [        U ]&  " U0 UD6n[        R                  XS9  U$ )NTforce_insertF)created)_metaprimary_key_pkgetboolpre_saver8   rA   r   save	post_save)r   r5   r6   pk_valuerG   retrC   s         r   rN   
Model.saveC   sm    #zz554884**^U3I4>7Id,E4%t6v6t-
r   c                    > [         R                  U 5        [        [        U ]  " U0 UD6n[
        R                  U 5        U$ r   )
pre_deleter8   rA   r   delete_instancepost_delete)r   r5   r6   rQ   rC   s       r   rU   Model.delete_instanceK   s8    E40$A&A
r   r.   )	r   r:   r;   r<   r   rN   rU   r=   __classcell__)rC   s   @r   r   r   >   s     r   r   N)__doc__peeweer   _Modelobjectr   rM   rO   rT   rV   rB   r.   r   r   <module>r]      sM    #-V -` 8H	X
h8F r   