K i dZddlmZGddeZeZeZeZeZ eZ GddeZy)z. Provide django-style hooks for model events. )Modelc6eZdZdZdZddZd dZddZdZy) Signalc$|jyN)_flushselfs W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/playhouse/signals.py__init__zSignal.__init__s  c0t|_g|_yr)set _receivers_receiver_listr s r rz Signal._flush s% r Nc|xs |j}||f}||jvr:|jj||jj |||fyt d|d|xsdd)Nreceiver named z (for sender=anyz) already connected)__name__raddrappend ValueError)r receivernamesenderkeys r connectzSignal.connectst(x((Vn doo % OO   $    & &h'? @,0&/E/CD Dr c8|r|xs |j}|s td||f}||jvrtd|d|xsdd|jj||jDcgc]\}}}||f|k7r|||fc}}}|_ycc}}}w)Nz%a receiver or a name must be providedrz for sender=rz not found.)rrrremover)r rrrrnrss r disconnectzSignal.disconnects ,8,,DDE EVn doo %"FOeO56 6 s#8<8K8K11WQ1#$a&C-!"1ay11s3Bcfd}|S)Nc.j||Sr)r)fnrr rs r decoratorz"Signal.__call__..decorator)s LLT6 *Ir )r rrr's``` r __call__zSignal.__call__(s r c t|}g}|jD]3\}}}| t||s|j||||g|i|f5|Sr)typer isinstancer) r instanceargskwargsr responsesr r!r"s r sendz Signal.send.sgh ** LGAq!yJx3  !Qvx%I$%I&%I!JK Lr )NN)NNN) r __module__ __qualname__r rrr#r)r1r(r r rrs!!D 1 r rc2eZdZfdZfdZfdZxZS)rcVtt| |i|tj |yr)superrr pre_initr1)r r.r/ __class__s r r zModel.__init__?s# eT#T4V4 dr c|jjr |jnd}|jddxs t | }t j ||tt|&|i|}tj |||S)NT force_insertF)created) _meta primary_key_pkgetboolpre_saver1r6rsave post_save)r r.r/pk_valuer;retr8s r rBz Model.saveCsq#zz554884**^U3I4>7I dG ,E4%t6v6tW- r ctj|tt||i|}t j||Sr) pre_deleter1r6rdelete_instance post_delete)r r.r/rEr8s r rHzModel.delete_instanceKs8E40$A&A r )rr2r3r rBrH __classcell__)r8s@r rr>sr rN) __doc__peeweer_ModelobjectrrArCrGrIr7r(r r rOsM#-V-` 8 H X h 8Fr