
    +#h                     F    d dl Z d dlmZ d dlmZ  G d d      Z e       Zy)    N)contextmanager)dotdictc                   x     e Zd ZdZdZ fdZed        Z fdZd Z	d Z
ddefd	Zedd
       ZdefdZ xZS )SettingszDSP configuration settings.Nc                    | j                   t        | 	  |       | _         t        j                         | j                   _        t        j                         | j                   _        g | j                   _        i | j                   _	        | j                   j                  | j                   j                  t        j                         <   t        ddddddddg dddddg       }| j                   j                  |       | j                   S )z^
        Singleton Pattern. See https://python-patterns.guide/gang-of-four/singleton/
        Nr   F)lmrm
branch_idxrerankercompiled_lmforce_reuse_cached_compilation	compilingskip_logprobstracereleasebypass_assertbypass_suggestassert_failuressuggest_failureslangchain_history)	_instancesuper__new__	threadingLocklock	get_identmain_tid
main_stackstack_by_threadr   _Settings__append)clsconfig	__class__s     O/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dsp/utils/settings.pyr   zSettings.__new__   s    
 == !GOC0CM!*!1CMM%.%8%8%:CMM"')CMM$,.CMM)CF==C[C[CMM)))*=*=*?@
  /4##$ !!""$F" MM""6*}}    c                     t        j                         }|| j                  vr+| j                  d   j	                         g| j                  |<   | j                  |   d   S N)r   r   r    r   copyself	thread_ids     r%   r#   zSettings.config1   sY    '')	D000/3r/B/G/G/I.JD  +##I.r22r&   c                     t        | j                  |      rt        | j                  |      S || j                  v r| j                  |   S t        |   |       y N)hasattrr#   getattrr   __getattr__)r,   namer$   s     r%   r2   zSettings.__getattr__8   sJ    4;;%4;;--4;;;;t$$D!r&   c                     t        j                         }|| j                  vr+| j                  d   j	                         g| j                  |<   | j                  |   j                  |       y r(   )r   r   r    r   r*   append)r,   r#   r-   s      r%   __appendzSettings.__appendA   s\    '')	D000/3r/B/G/G/I.JD  +Y'..v6r&   c                     t        j                         }|| j                  v r| j                  |   j                          y y r/   )r   r   r    popr+   s     r%   __popzSettings.__popG   s:    '')	,,,  +//1 -r&   inherit_configc                 T    |ri | j                   |}ni |}| j                  |       y)zSet configuration settings.

        Args:
            inherit_config (bool, optional): Set configurations for the given, and use existing configurations for the rest. Defaults to True.
        N)r#   r!   )r,   r:   kwargsr#   s       r%   	configurezSettings.configureL   s/     ..v.FZFfr&   c              +      K    | j                   dd|i| 	 d  | j                          y # | j                          w xY ww)Nr:    )r=   _Settings__pop)r,   r:   r<   s      r%   contextzSettings.contextY   s6     ?n??	JJLDJJLs   A- A?Areturnc                 ,    t        | j                        S r/   )reprr#   )r,   s    r%   __repr__zSettings.__repr__b   s    DKK  r&   )T)__name__
__module____qualname____doc__r   r   propertyr#   r2   r!   r@   boolr=   r   rA   strrE   __classcell__)r$   s   @r%   r   r      s`    %I#J 3 3"72
   !# !r&   r   )r   
contextlibr   dsp.utils.utilsr   r   settingsr?   r&   r%   <module>rQ      s$     % #\! \!~ :r&   