
    +#h                     ~    d dl Z d dlZd dlmZmZ d dlmZ  G d d      Z e       Zd Z	d Z
d Zed	k(  r e        yy)
    N)ThreadPoolExecutoras_completed)contextmanagerc                   .    e Zd Zd Zd Zd Zed        Zy)Settingsc                 v    t        j                         | _        i | _        t        j                         | _        y N)	threadingLock_lock_parent_configslocal_localselfs    R/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dsp/utils/settings_v2.py__init__zSettings.__init__   s*    ^^%
  "  oo'    c                     t        | j                  d      r/| j                  j                  r| j                  j                  d   S i S )Nconfig_stack)hasattrr   r   r   s    r   _get_current_configzSettings._get_current_config   s9    /6t{{N/SX\XcXcXpXpt{{''+xvxxr   c                     | j                   5  | j                  j                  |      }|r&t        j                  |      g| j
                  _        ni g| j
                  _        ddd       y# 1 sw Y   yxY w)zHInitialize thread-local data for a new thread using its parent's config.N)r   r   getcopydeepcopyr   r   )r   
parent_tidparent_configs      r   initialize_for_threadzSettings.initialize_for_thread   s]    ZZ 	0 0044Z@M,0MM-,H+I(,.4(	0 	0 	0s   AA,,A5c              +     K   t        j                  | j                               }|j                  |       t	        | j
                  d      sg | j
                  _        | j
                  j                  j                  |       | j                  5  t        j                  |      | j                  t        j                         <   d d d        	 d  | j
                  j                  j                          | j                  5  | j                  j                  t        j                         d        d d d        y # 1 sw Y   vxY w# 1 sw Y   y xY w# | j
                  j                  j                          | j                  5  | j                  j                  t        j                         d        d d d        w # 1 sw Y   w xY wxY ww)Nr   )r   r   r   updater   r   r   appendr   r   r
   	get_identpop)r   kwargscurrent_configs      r   contextzSettings.context   s_    t'?'?'ABf%t{{N3')DKK$  ''7 ZZ 	X:>--:WD  !4!4!67	X	FKK$$((*  F$$(()<)<)>EF F	X 	XF F KK$$((*  F$$(()<)<)>EF F Fsf   BG	5D9G	E 0G	/E0	G	9E>G	E
G	1G/F:1	G:G?GG	N)__name__
__module____qualname__r   r   r    r   r(    r   r   r   r      s(    (y0 F Fr   r   c                 <    t         j                  |        | |i |S r	   )dsp_settingsr    )programr   argsr&   s       r   thread_wrapperr1   :   s     &&z2D#F##r   c           	      t    t        dt        j                          d|  dt        j	                                 y )NzThread z
 with arg=z has config: )printr
   r$   r.   r   )args    r   sample_programr5   @   s1    	GI'')**SE|GgGgGiFj
klr   c                     t        j                         } t        j                  dd      5  t	        d      5 }t        d      D ch c]  }|j                  t        t        | |        }}t        |      D ]  }|j                         } 	 d d d        t        d|  dt        j                                 d d d        y c c}w # 1 sw Y   :xY w# 1 sw Y   y xY w)	N
      )ab   )max_workers   zMain thread z config after threads: )r
   r$   r.   r(   r   rangesubmitr1   r5   r   resultr3   r   )r   executorr4   futuresfutureress         r   mainrE   D   s    $$&J			b		) fA. 	&(chijckl\_x~~zSVWlGl&w/ &mmo&	& 	ZL(?@`@`@b?cdef fl	& 	&f fs4   CC#C*"C+CCC	CC__main__)r   r
   concurrent.futuresr   r   
contextlibr   r   r.   r1   r5   rE   r)   r,   r   r   <module>rI      sL      ? %,F ,F^ z$m
f zF r   