
    Z,g(                        d dl mZ d dlZd dlmZ 	 d dlZd dlZ ej                         d k(  r e	d      i Z
i Zg Zd Zd Zd Zd Zd	 Zd
 Zd Zee_        ee_         G d de      Z G d de      Z G d de      Z G d de      ZddefdZd@dZd@dZd@dZ G d de      Zd Z e e_!         G d de      Z" G d de      Z# G d  d!e      Z$ G d" d#e      Z% G d$ d%e%      Z& G d& d'e      Z' G d( d)e'      Z( G d* d+e      Z) G d, d-e      Z* G d. d/e      Z+ G d0 d1e      Z, G d2 d3e      Z- G d4 d5e      Z. G d6 d7e      Z/ G d8 d9e      Z0 G d: d;e      Z1 G d< d=e      Z2 G d> d?e      Z3y#  d dlZY mxY w)A    partialN)Threadz>you have to enable the uWSGI master process to use this modulec                 n    t         j                  dk\  r!t        | t              r| j	                  d      S | S N)   r   zutf-8)sysversion_info
isinstancestrencodevals    i/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/uwsgidecorators.py_encode1r      s-    
6!jc&:zz'""
    c                 n    t         j                  dk\  r!t        | t              r| j	                  d      S | S r   )r	   r
   r   bytesdecoder   s    r   _decode1r      s-    
6!je&<zz'""
r   c                 B    t        d | j                         D              S )Nc              3   N   K   | ]  \  }}t        |      t        |      f  y wN)r   .0KVs      r   	<genexpr>z%_encode_to_spooler.<locals>.<genexpr>%   !     Fv1!hqk*F   #%dictitemsvarss    r   _encode_to_spoolerr&   $       FFFFr   c                 B    t        d | j                         D              S )Nc              3   N   K   | ]  \  }}t        |      t        |      f  y wr   r   r   s      r   r   z'_decode_from_spooler.<locals>.<genexpr>)   r   r    r!   r$   s    r   _decode_from_spoolerr+   (   r'   r   c                  l    t        dd      D ]  } t        j                  |       r| c S  t        d      )Nr      zNo free uwsgi signal available)rangeuwsgisignal_registered	Exception)signums    r   get_free_signalr3   ,   s8    3- &&v.M 4
55r   c                 @   t        d | j                         D              } d| v r.dD ])  }t        j                  | j	                  |            | |<   + t        |       } t        | d      }d| v r || d   i | d   }n ||       }t        | j                  d|            S )Nc              3   <   K   | ]  \  }}t        |      |f  y wr   r*   r   s      r   r   z'manage_spool_request.<locals>.<genexpr>7   s     <Va!a <s   argsr6   kwargsud_spool_funcr8   ud_spool_ret)	r"   r#   pickleloadspopr+   spooler_functionsintget)r%   kfrets       r   manage_spool_requestrD   4   s     <tzz|<<D~# 	0All488A;/DG	0  %D$/0A~f0h0gtxx,--r   c                  (    t         D ]	  }  |          y r   )postfork_chainrB   s    r   postfork_chain_hookrH   G   s     	r   c                       e Zd Zd Zd Zy)postforkc                 ~    t        |      rd| _        || _        nd | _        || _        t        j	                  |        y Nr   )callablewidrB   rF   appendselfrB   s     r   __init__zpostfork.__init__P   s3    A;DHDFDFDHd#r   c                     | j                   rA| j                  dkD  r"| j                  t        j                         k7  ry | j                         S |d   | _         y rL   )rB   rN   r/   	worker_idrQ   r6   r8   s      r   __call__zpostfork.__call__X   s?    66xx!|EOO,= =668Oar   N__name__
__module____qualname__rR   rV    r   r   rJ   rJ   O   s    $r   rJ   c                       e Zd Zd Zd Zd Zy)	_spoolrawc                    | j                   j                         }| j                  s6t        |      dkD  r|j	                  |d          |r|j	                  |       n{i }dD ])  }||v s|j	                  ||j                  |      i       + |j	                  |       |j	                  t        j                  |      t        j                  |      d       t        j                  t        |            S )Nr   )message_dictspoolerpriorityatbodyr7   )	base_dictcopypass_argumentslenupdater=   r;   dumpsr/   spoolr&   )rQ   r6   r8   	argumentsspooler_argskeys         r   rV   z_spoolraw.__call__b   s    NN'')	""4y1}  a)  (LL @&= ''fjjo(>?@ \*d+v||F7KLN{{-i899r   c                 B     | j                   j                  | g|i |S r   )	__class__rV   rU   s      r   rj   z_spoolraw.spoolt   s#    &t~~&&t=d=f==r   c                 F   dt         j                  vr"t        d| j                  j                  z        || _        | j
                  t        | j
                  j                  <   | j                  | j
                  _        || _	        d| j
                  j                  i| _
        y )Nr`   z9you have to enable the uWSGI spooler to use @%s decoratorr9   )r/   optr1   ro   rX   rB   r>   rV   rj   rf   rd   )rQ   rB   rf   s      r   rR   z_spoolraw.__init__w   sx    EII%KdnnNeNeeg g-1VV$&&//*}},)466??;r   N)rX   rY   rZ   rV   rj   rR   r[   r   r   r]   r]   `   s    :$>	<r   r]   c                       e Zd Zd Zy)_spoolc                     t        t        j                        | j                  d<   t	        j
                  | g|i |S Nr:   )r   r/   SPOOL_OKrd   r]   rV   rU   s      r   rV   z_spool.__call__   s4    ),U^^)<~&!!$8888r   NrX   rY   rZ   rV   r[   r   r   rs   rs          9r   rs   c                       e Zd Zd Zy)_spoolforeverc                     t        t        j                        | j                  d<   t	        j
                  | g|i |S ru   )r   r/   SPOOL_RETRYrd   r]   rV   rU   s      r   rV   z_spoolforever.__call__   s6    ),U->->)?~&!!$8888r   Nrw   r[   r   r   rz   rz      rx   r   rz   Fc                 2    | st        ||      S  || |      S )N)rf   r   )rB   rf   _classs      r   spool_decorater      s    vn==!^$$r   c                     t        | |      S r   )r   rB   rf   s     r   spoolrawr      s    !^,,r   c                 $    t        | |t              S r   )r   rs   r   s     r   rj   rj      s    !^V44r   c                 $    t        | |t              S r   )r   rz   r   s     r   spoolforeverr      s    !^];;r   c                       e Zd Zd Zd Zd Zy)mulefuncc                     t        |      r,|j                  | _        d| _        |t        |j                  <   y || _        d | _        y rL   )rM   rX   fnamemulemule_functionsrP   s     r   rR   zmulefunc.__init__   s7    A;DJDI)*N1::&DIDJr   c           	          t        j                  t        j                  d| j                  ||d      | j
                         y )Nuwsgi_mulefunc)servicefuncr6   r8   )r/   mule_msgr;   ri   r   r   rU   s      r   	real_callzmulefunc.real_call   s7    v||+

 	
 99	r   c                     | j                   s6|d   j                  | _         |d   t        | j                   <   | j                  S  | j                  |i |S rL   )r   rX   r   r   rU   s      r   rV   zmulefunc.__call__   sL    zza))DJ)-aN4::&>>!t~~t.v..r   NrX   rY   rZ   rR   r   rV   r[   r   r   r   r      s    /r   r   c                 l    t        j                  |       }|d   dk(  rt        |d      |d   i |d   S y )Nr   r   r   r6   r8   )r;   r<   r   )messagemsgs     r   mule_msg_dispatcherr      sC    
,,w
C
9~))c&k*CKI3x=II *r   c                       e Zd Zd Zd Zy)rpcc                     || _         y r   namerQ   r   s     r   rR   zrpc.__init__   	    	r   c                 F    t        j                  | j                  |       |S r   )r/   register_rpcr   rP   s     r   rV   zrpc.__call__   s    499a(r   NrW   r[   r   r   r   r          r   r   c                       e Zd Zd Zd Zy)	farm_loopc                      || _         || _        y r   )rB   farm)rQ   rB   r   s      r   rR   zfarm_loop.__init__   s    	r   c                     t        j                         dk(  ry t        j                  | j                        sy 	 t        j                         }|r| j                  |       (rL   )r/   mule_idin_farmr   farm_get_msgrB   rQ   r   s     r   rV   zfarm_loop.__call__   sJ    ==?a}}TYY'((*Gw r   NrW   r[   r   r   r   r      s     r   r   c                       e Zd ZddZd Zy)r   Nc                     || _         y r   r   )rQ   r   r8   s      r   rR   zfarm.__init__   r   r   c                 V    t         j                  t        || j                               y r   )rF   rO   r   r   rP   s     r   rV   zfarm.__call__   s    i49956r   r   rW   r[   r   r   r   r      s    7r   r   c                       e Zd Zd Zd Zy)
mule_brainc                      || _         || _        y r   rB   numrQ   rB   r   s      r   rR   zmule_brain.__init__       r   c                 
   t        j                         | j                  k(  r	 | j                          y y #  t	        j
                         }t	        j                  |d   |d   |d          t	        j                  d       Y y xY wNr         r/   r   r   rB   r	   exc_info
excepthookexitrQ   excs     r   rV   zmule_brain.__call__   s`    ==?dhh& 'llns1vs1vs1v6s
   5 ABNrW   r[   r   r   r   r      s    r   r   c                       e Zd Zd Zy)mule_brainloopc                    t        j                         | j                  k(  r	 	 | j                          y #  t	        j
                         }t	        j                  |d   |d   |d          t	        j                  d       Y OxY wr   r   r   s     r   rV   zmule_brainloop.__call__   sh    ==?dhh& FFH  ' ,,.CNN3q63q63q6:HHQKs
   6 ABNrw   r[   r   r   r   r      s     r   r   c                       e Zd Zd Zd Zy)r   c                     || _         y r   r   rQ   r   s     r   rR   zmule.__init__  	    r   c                 V    t         j                  t        || j                               y r   )rF   rO   r   r   rP   s     r   rV   zmule.__call__  s    jDHH56r   NrW   r[   r   r   r   r   
  s    7r   r   c                       e Zd Zd Zy)muleloopc                 V    t         j                  t        || j                               y r   )rF   rO   r   r   rP   s     r   rV   zmuleloop.__call__  s    nQ9:r   Nrw   r[   r   r   r   r     s    ;r   r   c                       e Zd Zd Zd Zy)mulemsg_loopc                      || _         || _        y r   r   r   s      r   rR   zmulemsg_loop.__init__  r   r   c                     t        j                         | j                  k(  r)	 t        j                         }|r| j	                  |       (y r   )r/   r   r   mule_get_msgrB   r   s     r   rV   zmulemsg_loop.__call__  s=    ==?dhh&,,.FF7O  'r   NrW   r[   r   r   r   r     s    $r   r   c                       e Zd Zd Zd Zy)mulemsgc                     || _         y r   r   r   s     r   rR   zmulemsg.__init__&  r   r   c                 V    t         j                  t        || j                               y r   )rF   rO   r   r   rP   s     r   rV   zmulemsg.__call__)  s    l1dhh78r   NrW   r[   r   r   r   r   %  s    9r   r   c                       e Zd Zd Zd Zy)signalc                 @    || _         |j                  dd      | _        y )Ntarget )r   r@   r   )rQ   r   r8   s      r   rR   zsignal.__init__/  s    jj2.r   c                 \    t        j                  | j                  | j                  |       |S r   )r/   register_signalr   r   rP   s     r   rV   zsignal.__call__3  s!    dhhQ7r   NrW   r[   r   r   r   r   -  s    /r   r   c                       e Zd Zd Zd Zy)timerc                 ~    |j                  dt                     | _        || _        |j                  dd      | _        y Nr2   r   r   r@   r3   r   secsr   rQ   r   r8   s      r   rR   ztimer.__init__:  0    ::h(9:	jj2.r   c                     t        j                  | j                  | j                  |       t        j                  | j                  | j
                         |S r   )r/   r   r   r   	add_timerr   rP   s     r   rV   ztimer.__call__?  s7    dhhQ7$)),r   NrW   r[   r   r   r   r   8      /
r   r   c                       e Zd Zd Zd Zy)cronc                     |j                  dt                     | _        || _        || _        || _        || _        || _        |j                  dd      | _        y r   )	r@   r3   r   minutehourdaymonthdayweekr   )rQ   r   r   r   r   r   r8   s          r   rR   zcron.__init__G  sL    ::h(9:	
jj2.r   c                    t        j                  | j                  | j                  |       t        j                  | j                  | j
                  | j                  | j                  | j                  | j                         |S r   )
r/   r   r   r   add_cronr   r   r   r   r   rP   s     r   rV   zcron.__call__P  sR    dhhQ7txxdiiHHdjj$,,	0r   NrW   r[   r   r   r   r   E  s    /r   r   c                       e Zd Zd Zd Zy)rbtimerc                 ~    |j                  dt                     | _        || _        |j                  dd      | _        y r   r   r   s      r   rR   zrbtimer.__init__Y  r   r   c                     t        j                  | j                  | j                  |       t        j                  | j                  | j
                         |S r   )r/   r   r   r   add_rb_timerr   rP   s     r   rV   zrbtimer.__call__^  s9    dhhQ7488TYY/r   NrW   r[   r   r   r   r   W  r   r   r   c                       e Zd Zd Zd Zy)filemonc                 ~    |j                  dt                     | _        || _        |j                  dd      | _        y r   )r@   r3   r   fsobjr   )rQ   r   r8   s      r   rR   zfilemon.__init__f  s0    ::h(9:
jj2.r   c                     t        j                  | j                  | j                  |       t        j                  | j                  | j
                         |S r   )r/   r   r   r   add_file_monitorr   rP   s     r   rV   zfilemon.__call__k  s9    dhhQ7txx4r   NrW   r[   r   r   r   r   d  r   r   r   c                       e Zd Zd Zd Zy)erlangc                     || _         y r   r   r   s     r   rR   zerlang.__init__s  r   r   c                 F    t        j                  | j                  |       |S r   )r/   erlang_register_processr   rP   s     r   rV   zerlang.__call__v  s    %%dii3r   NrW   r[   r   r   r   r   q  r   r   r   c                       e Zd Zd Zd Zy)lockc                     || _         y r   rG   rP   s     r   rR   zlock.__init__|  	    r   c                     t        j                         ry t        j                          	  | j                  |i |t        j                          S # t        j                          w xY wr   )r/   i_am_the_spoolerr  rB   unlockrU   s      r   rV   zlock.__call__  sE    !!#

	4664*6*LLNELLNs   A A'NrW   r[   r   r   r  r  {  s    r   r  c                       e Zd Zd Zd Zy)threadc                     || _         y r   rG   rP   s     r   rR   zthread.__init__  r  r   c                 v    t        | j                  |      }d|_        |j                          | j                  S )N)r   r6   T)r   rB   daemonstart)rQ   r6   ts      r   rV   zthread.__call__  s+    $&&t,		vvr   NrW   r[   r   r   r  r    s    r   r  c                       e Zd Zd Zd Zd Zy)harakiric                     || _         y r   )s)rQ   secondss     r   rR   zharakiri.__init__  s	    r   c                     t        j                  | j                          | j                  |i |}t        j                  d       |S rL   )r/   set_user_harakirir  rB   )rQ   r6   r8   rs       r   r   zharakiri.real_call  s<    'DFFD#F#"r   c                 (    || _         | j                  S r   )rB   r   rP   s     r   rV   zharakiri.__call__  s    ~~r   Nr   r[   r   r   r  r    s    r   r  )NF)4	functoolsr   r	   	threadingr   cPickler;   r/   	masterpidr1   r>   r   rF   r   r   r&   r+   r3   rD   rH   r`   post_fork_hookobjectrJ   r]   rs   rz   r   r   rj   r   r   r   mule_msg_hookr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r[   r   r   <module>r     s    
  5??
HJ J  GG6.& %* v " <  <F9Y 99I 9 %	 %-5</v /<J
 * &    "76 7  
 Z 
 76 7;t ;
$6 $9f 9V 
F 
6 $
f 

f 
V 6 	V 	v _s   E: :F