
     sg                         d dl Z d dlZd dlmZmZ  ee j                  d      Z ee j                  d      ZdZ	dZ
 G d de      Z G d d	e      Z G d
 dee      Zy)    N)AnyDictw      c                   .    e Zd ZeZeZddefdZd Zd Zy)suppress_stdout_stderrdisablec                     || _         y N)r
   )selfr
   s     C/var/www/html/venv/lib/python3.12/site-packages/llama_cpp/_utils.py__init__zsuppress_stdout_stderr.__init__   s	        c                    | j                   r| S t        | _        t        | _        | j
                  j                  | j                        | _        | j
                  j                  | j                        | _        | j                  j                  | _        | j                  j                  | _        | j
                  j                  t        j!                         | j                         | j
                  j                  t"        j!                         | j                         t        | j                  _
        t"        | j                  _        | S r   )r
   STDOUT_FILENOold_stdout_fileno_undupSTDERR_FILENOold_stderr_fileno_unduposdupold_stdout_filenoold_stderr_filenosysstdout
old_stdoutstderr
old_stderrdup2outnull_filefilenoerrnull_file)r   s    r   	__enter__z suppress_stdout_stderr.__enter__   s    <<K'4$'4$!%T-I-I!J!%T-I-I!J((//((//\((*D,H,HI\((*D,H,HI&&r   c                    | j                   ry | j                  | j                  _        | j                  | j                  _        | j                  j                  | j                  | j                         | j                  j                  | j                  | j                         | j                  j                  | j                         | j                  j                  | j                         y r   )r
   r   r   r   r   r   r   r   r   r   r   r   close)r   _s     r   __exit__zsuppress_stdout_stderr.__exit__,   s    << ////T++T-I-IJT++T-I-IJd,,-d,,-r   N)T)	__name__
__module____qualname__r   r   boolr   r#   r'    r   r   r	   r	      s$     C	B (.r   r	   c                   J     e Zd ZU dZi Zeeef   ed<   dededef fdZ	 xZ
S )MetaSingletonz;
    Metaclass for implementing the Singleton pattern.
    
_instancesargskwargsreturnc                 ~    | | j                   vr t        t        |   |i || j                   | <   | j                   |    S r   )r/   superr.   __call__)clsr0   r1   	__class__s      r   r5   zMetaSingleton.__call__B   s=    cnn$"'s"Dd"Uf"UCNN3~~c""r   )r(   r)   r*   __doc__r/   r   typer   __annotations__r5   __classcell__r7   s   @r   r.   r.   ;   s;     #%JT3Y$#S #C #C # #r   r.   c                   "     e Zd ZdZ fdZ xZS )	Singletonz<
    Base class for implementing the Singleton pattern.
    c                 *    t         t        |           y r   )r4   r>   r   )r   r7   s    r   r   zSingleton.__init__M   s    i')r   )r(   r)   r*   r8   r   r;   r<   s   @r   r>   r>   H   s    * *r   r>   )	metaclass)r   r   typingr   r   opendevnullr    r"   r   r   objectr	   r9   r.   r>   r,   r   r   <module>rE      sa    	 
  BJJ$BJJ$*.V *.Z
#D 
#*- *r   