
    `i=                     $   d Z ddlmZ ddlZddlZddlZddlZddlZddlZdZ	ej
        dk    r
ddlmZ d Zn G d d	e          Zd
 Z ej        dd          Zd Z ej        d          Z G d de          Zd ZddZ	 ddlmZ n# e$ r	 ddlmZ Y nw xY w G d de          Z eej                  Z eej                  Zedk    rej         sd Zee_        nedk    rej         rnedk    r
d Zee_         ee          Z!d Z"d Z#dS )zT
Decorator module, see http://pypi.python.org/pypi/decorator
for the documentation.
    )print_functionNz4.0.10   )getfullargspecc                     | j         S N)__init__clss    o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/prometheus_client/decorator.pyget_initr   1   s
    |    c                   ,    e Zd ZdZd Zd Zej        ZdS )r   z?A quick and dirty replacement for getfullargspec for Python 2.Xc                 |    t          j        |          \  | _        | _        | _        | _        g | _        d | _        d S r   )inspect
getargspecargsvarargsvarkwdefaults
kwonlyargskwonlydefaults)selffs     r   r	   zgetfullargspec.__init__7   s:    "1%% ?DIt|TZ DO"&Dr   c              #   R   K   | j         V  | j        V  | j        V  | j        V  d S r   )r   r   r   r   )r   s    r   __iter__zgetfullargspec.__iter__=   sA      )OOO,*-r   N)__name__
__module____qualname____doc__r	   r   r   r    r   r   r   r   4   s<        II	' 	' 	'	  	  	  '


r   r   c                     | j         j        S r   )r	   __func__r
   s    r   r   r   F   s    |$$r   ArgSpeczargs varargs varkw defaultsc                 l    t          |           }t          |j        |j        |j        |j                  S )z$A replacement for inspect.getargspec)r   r$   r   r   r   r   )r   specs     r   r   r   N   s+    !D49dlDJFFFr   z\s*def\s*([_\w][_\w\d]*)\s*\(c                   f    e Zd ZdZ ej                    Z	 	 d	dZd Zd
dZ	e
	 	 dd            ZdS )FunctionMakerz
    An object with the ability to create functions with a given signature.
    It has attributes name, doc, module, signature, defaults, dict and
    methods update and make.
    Nc           	         || _         |rO|j        | _        | j        dk    rd| _        |j        | _        |j        | _        t          j        |          rt          |          }t          |di           | _        dD ]!}	t          | |	t          ||	                     "t          | j                  D ]\  }
}t          | d|
z  |           t          j        dk     r(t          j        |dd id	d
         x| _         | _        n7t'          | j                  }t'          | j                  }| j        r;|                    d| j        z              |                    d| j        z              n| j        r|                    d           | j        D ]4}	|                    d|	z             |                    |	d|	           5| j        r:|                    d| j        z              |                    d| j        z              d                    |          | _        d                    |          | _         |j                                        | _        |r|| _        ||| _        |r|| _        |r|| _        |r|| _        |r|| _        t;          | d          sJ t;          | d          st=          d|z            d S )N<lambda>_lambda___annotations__)r   r   r   r   r   r   zarg%dr   formatvaluec                     dS )N r!   )vals    r   <lambda>z(FunctionMaker.__init__.<locals>.<lambda>w   s    B r      *z%s=None=z**, name	signaturez%You are decorating a non function: %s)shortsignaturer   r7   r    docr   moduler   
isfunctionr   getattrannotationssetattr	enumerater   sysversion_infoformatargspecr8   listr   appendr   r   join__dict__copydictr   hasattr	TypeError)r   funcr7   r8   r   r:   r;   funcdictargspecaiargallargsallshortargss                 r   r	   zFunctionMaker.__init__b   s   ' #	1DIyJ&&&	|DH/DK!$'' 1(..#*41BB#G#G , : :AD!WWa%8%89999'	22 4 4FAsD'A+s3333#d**-9@B(6B BBCB$HID'$.. #49ooG#'	??L| ,sT\'9:::$++C$,,>???? ,s+++!_ > >y1}555$++qqq!!,<====z ?tdj'8999$++D4:,=>>>%)YYw%7%7DN*.))L*A*AD' M..00	 	DI &DN 	%$DM 	DH 	! DK 	! DItV$$$$$t[)) 	LCdJKKK	L 	Lr   c                    | j         |_        t          | dd          |_        t          | di           |_        t          | dd          |_        t          | dd          |_        t          | dd          |_        	 t          j	        d          }|j
                            d	d
          }n# t          $ r d
}Y nw xY wt          | d|          |_        |j                            |           dS )z2Update the signature of func with the data in selfr:   NrI   r   r!   r   r>   r   r   ?r;   )r7   r   r=   r    rG   __defaults____kwdefaults__r,   rA   	_getframe	f_globalsgetAttributeErrorr   update)r   rL   kwframecallermodules        r   r\   zFunctionMaker.update   s    	tUD11fb11#D*b99%d,<dCC&t]DAA	@M!$$E !?..z3??LL  	 	 	LLL	 "$,??R     s   <B, ,B;:B;Fc                    |t          |           z  }|pi }t                              |          }|t          d|z            |                    d          }t          |gd | j                            d          D             z             }|D ]}	|	dv rt          |	d|          |	                    d          s|dz  }d	t          | j                  fz  }
	 t          ||
d
          }t          ||           n<#  t          dt          j                   t          |t          j                    xY w||         }|r||d<    | j        |fi | |S )zBMake a new function from a given template and update the signatureNz not a valid function template
%sr2   c                 8    g | ]}|                     d           S )z *)strip.0rQ   s     r   
<listcomp>z&FunctionMaker.make.<locals>.<listcomp>   s.     > > >#ciioo > > >r   ,)_func__call_z is overridden in

z<decorator-gen-%d>singlezError in generated code:)file
__source__)varsDEFmatchSyntaxErrorgroupsetr9   split	NameErrorendswithnext_compile_countcompileexecprintrA   stderrr\   )r   	src_templevaldict	addsourceattrssrcmor7   namesnfilenamecoderL   s                r   makezFunctionMaker.make   s   $t**$>rYYs^^:ACGHHHxx{{TF > >"177<<> > > > ? ? 	F 	FA(((QQQ DEEE ) ||D!! 	4KC
 (40C+D+D*FF	3(33Dx    	,3:>>>>#CJ''''~ 	&"%E,D""E"""s   !D 9D:Tc                 P   t          |t                    r8|                                                    dd          \  }	}
|
dd         }d}nd}	d}|} | ||	||||          }d                    d |                                D                       } |j        d|z   ||fi |S )z
        Create a function from the strings name, signature and body.
        evaldict is the evaluation dictionary. If addsource is true an
        attribute __source__ is added to the result. The attributes attrs
        are added, if any.
        (r2   Nr3   ri   c              3       K   | ]	}d |z   V  
dS )z    Nr!   )rd   lines     r   	<genexpr>z'FunctionMaker.create.<locals>.<genexpr>   s&      FFD&4-FFFFFFr   zdef %(name)s(%(signature)s):
)
isinstancestrrb   rs   rF   
splitlinesr   )r   objbodyr}   r   r:   r;   r~   r   r7   restr8   rL   r   ibodys                  r   createzFunctionMaker.create   s     c3 	**322JD$SbS	IDDDIDs4y(C@@		FFDOO4E4EFFFFFty9EA!97 7057 7 	7r   )NNNNNNN)NF)NNNT)r   r   r   r    	itertoolscountrw   r	   r\   r   classmethodr   r!   r   r   r(   r(   X   s          %Y_&&N7;@D7L 7L 7L 7Lr! ! !"       D 26047 7 7 [7 7 7r   r(   c                     t          ||           }t                              | d||           }t          | d          r| j        |_        |S )zE
    decorate(func, caller) decorates a function using a caller.
    )rh   rg   z)return _call_(_func_, %(shortsignature)s)__wrapped__r   )rI   r(   r   rJ   r   )rL   callerr}   funs       r   decorater      s_     6$///H


9d  $ $C t^$$ -,Jr   c                    |t          ||           S t          j        |           r-| j                                        }d| j        d| j        d}n[t          j        |           r| j        dk    rd}n| j        }| j        }n*| j        j                                        }| j        j        }t          | t                     }t                              d|z  d	||| j        | 
          S )z=decorator(caller) converts a caller function into a decoratorNz
decorator(z2) converts functions/generators into factories of z objectsr*   r+   )rh   
_decorate_z%s(func)zreturn _decorate_(func, _call_))r:   r;   r   )r   r   isclassr   lowerr<   r    	__class____call__rI   r(   r   r   )r   _funcr7   r:   r}   s        r   	decoratorr      s    v&&&v &$$&&+1???FOOOM		F	#	# &?j((DD?Dn(..00o%6h777HT<c&"3     r   )_GeneratorContextManager)GeneratorContextManagerc                       e Zd Zd ZdS )ContextManagerc                 \    t                               |dt          | |          |          S )zContext manager decoratorz.with _self_: return _func_(%(shortsignature)s))_self_rg   r   )r(   r   rI   )r   rL   s     r   r   zContextManager.__call__  s7    ##BT*** $ > > 	>r   N)r   r   r   r   r!   r   r   r   r     s#        > > > > >r   r      c                 8    t          j        |  ||i |          S r   r   r	   r   grO   ks       r   r	   r	     s!    '0qq!zqzzBBBr      c                 0    t          j        | |||          S r   r   r   s       r   r	   r	   '  s    '0q!Q???r   c                     d}t          |          D ]0\  }}t          ||           rd} nt          | |          r| ||<   d}1|r|                    |            dS dS )z_
    Append ``a`` to the list of the virtual ancestors, unless it is already
    included.
    TFN)r@   
issubclassrE   )rO   
vancestorsaddjvas        r   rE   rE   2  s    
 C:&&  2b! 	CEa 	JqMC
 ! r   c                        s
J d            dd                                z  t          j        df fd	 fd}dz   |_        |S )zr
    Factory of decorators turning a function into a generic function
    dispatching on the given arguments.
    zNo dispatch args passedz(%s,)r6   r/   c                      |t          |           t                              r/t          dt                    t          |           |fz            dS )z5Make sure one passes the expected number of argumentszExpected %d arguments, got %d%sN)lenrK   )	argumentswrongmsgdispatch_argss      r   checkzdispatch_on.<locals>.checkL  sh    5Y]!3!344 	G= //YEF G G G	G 	Gr   c                 F    t          t                     j                  }t          	          |k    st          d
z            i 	fdfdfd}fd} fd}t                               d
z  t          |          | | 	
  
        S )
z4Decorator turning a function into a generic functionzUnknown dispatch arguments %sc                  
    |            d t          t                              D             }D ]C}t          | ||          D ]/\  }}}t          ||          r||j        vrt          ||           0Dd |D             S )zU
            Get a list of sets of virtual ancestors for the given types
            c                     g | ]}g S r!   r!   )rd   _s     r   re   zIdispatch_on.<locals>.gen_func_dec.<locals>.vancestors.<locals>.<listcomp>a  s    999!2999r   c                 ,    g | ]}t          |          S r!   )rr   )rd   ras     r   re   zIdispatch_on.<locals>.gen_func_dec.<locals>.vancestors.<locals>.<listcomp>f  s    ***CGG***r   )ranger   zipr   __mro__rE   )	typesrastypes_ttype_r   r   r   typemaps	         r   r   z5dispatch_on.<locals>.gen_func_dec.<locals>.vancestors\  s     E%LLL99uS%7%788999C! * *$'vs$;$; * *LAub!!U++ *QY0F0Fub)))* +*c****r   c                  F    |            g }t          |  |            D ]~\  }}t          |          }|dk    rt          d|d|          |dk    r%|\  }t          d||fi           j        dd         }n|j        }|                    |dd                    |S )zG
            Get a list of virtual MROs, one for each type
            r2   zAmbiguous dispatch for z: r   Nr3   )r   r   RuntimeErrortyper   rE   )	r   listsr   vasn_vasr   mror   r   s	          r   	ancestorsz4dispatch_on.<locals>.gen_func_dec.<locals>.ancestorsh  s     E%LLLEeZZ%788 
' 
'3C199&,;<11ccBD D DaZZCBsQGR008<CC)CS"X&&&&Lr   c                  .                   fd}|S )zU
            Decorator to register an implementation for the given types
            c                 t     t          |           j        t          j        d| j        z              | <   | S )Nz in )r   r   operatorltr   )r   r   r   r   s    r   decz@dispatch_on.<locals>.gen_func_dec.<locals>.register.<locals>.dec  s9    nQ'',hk6AJ;NOOO!"r   r!   )r   r   r   r   s   ` r   registerz3dispatch_on.<locals>.gen_func_dec.<locals>.register{  s=     E%LLL      
 Jr   c                       |            g }t          j         |   D ].}|                    t          d |D                                  /|S )zI
            An utility to introspect the dispatch algorithm
            c              3   $   K   | ]}|j         V  d S r   )r   )rd   rO   s     r   r   zKdispatch_on.<locals>.gen_func_dec.<locals>.dispatch_info.<locals>.<genexpr>  s$       9 9 9 9 9 9 9 9r   )r   productrE   tuple)r   lstancr   r   s      r   dispatch_infoz8dispatch_on.<locals>.gen_func_dec.<locals>.dispatch_info  sf     E%LLLC ())U*;< ; ;

5 9 9S 9 9 999::::Jr   c                    t          d | D                       }	 	|         } ||i |S # t          $ r Y nw xY wt          j         |  }t	          |           |D ]#}	                    |          }|
 ||i |c S $ |i |S )Nc              3   4   K   | ]}t          |          V  d S r   )r   rc   s     r   r   zGdispatch_on.<locals>.gen_func_dec.<locals>._dispatch.<locals>.<genexpr>  s(      ==$s))======r   )r   KeyErrorr   r   rv   rZ   )
r   r   r]   r   r   combinationsr   r   rL   r   s
          r   	_dispatchz4dispatch_on.<locals>.gen_func_dec.<locals>._dispatch  s    ==}=====E&EN q$~"~~%     %,ii.?@L& * *KK''=1d>b>>))) ! 4$$$$s   , 
99z#return _f_(%s, %%(shortsignature)s))_f_)r   defaultr   r   r   r   r   )rr   r   r   rt   r(   r   rI   )rL   argsetr   r   r   r   r   r   r   r   dispatch_strs   `    @@@r   gen_func_decz!dispatch_on.<locals>.gen_func_decR  s5    ^D)).//=!!V++;lJKKK
	+ 
	+ 
	+ 
	+ 
	+ 
	+ 
	+	 	 	 	 	 	&	 	 	 	 	 		 	 	 	 	 		% 	% 	% 	% 	% 	% 	%$ ##7,FY(D
i'T	 $ ; ; 	;r   dispatch_on)rF   r   ner   )r   r   r   r   s   ` @@r   r   r   D  s    
 33333=TYY}555L'{ G G G G G GV; V; V; V; V; V; V;p *L8Lr   r   )$r    
__future__r   collectionsr   r   r   rerA   __version__rB   r   r   object
namedtupler$   r   rx   rn   r(   r   r   
contextlibr   ImportErrorr   r   r	   initr   r   n_argsr   contextmanagerrE   r   r!   r   r   <module>r      s  <  & % % % % %           				 



t&&&&&&   ( ( ( ( ( ( ( ($% % % !+
 ,. .G G G bj122J7 J7 J7 J7 J7F J7 J7 J7Z
 
 
   8O3333333 O O ONNNNNNNNO> > > > >- > > > ~.788	TY	Q;;t|;C C C 'Nq[[T\[q[[@ @ @ 'N>**
  $g g g g gs   B
 
BB