
    ]Ci=                     N   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSr	\R                  S:  a
  SSKJr  S rO " S S	\5      rS
 r\R                  " SS5      rS r\R"                  " S5      r " S S\5      rS rSS jr SSKJr   " S S\5      r\" \R6                  5      r\" \R<                  5      r\S:X  a  \R@                  (       d  S r\\l        O(\S:X  a  \R@                  (       a  O\S:X  a
  S r\\l        \" \5      r!S r"S r#g! \ a	    SSKJr   Nf = f)zT
Decorator module, see http://pypi.python.org/pypi/decorator
for the documentation.
    )print_functionNz4.0.10   )getfullargspecc                     U R                   $ N)__init__clss    U/home/james-whalen/.local/lib/python3.13/site-packages/prometheus_client/decorator.pyget_initr   1   s    ||    c                   <    \ rS rSrSrS rS r\R                  rSr	g)r   4   z?A quick and dirty replacement for getfullargspec for Python 2.Xc                 ~    [         R                  " U5      u  U l        U l        U l        U l        / U l        S U l        g r   )inspect
getargspecargsvarargsvarkwdefaults
kwonlyargskwonlydefaults)selffs     r   r	   getfullargspec.__init__7   s4    ""1% ?DIt|TZ DO"&Dr   c              #   |   #    U R                   v   U R                  v   U R                  v   U R                  v   g 7fr   )r   r   r   r   )r   s    r   __iter__getfullargspec.__iter__=   s,     ))O,,**--s   :<)r   r   r   r   r   r   N)
__name__
__module____qualname____firstlineno____doc__r	   r   r   r   __static_attributes__ r   r   r   r   4   s    I	'	  ''
r   r   c                 .    U R                   R                  $ r   )r	   __func__r
   s    r   r   r   F   s    ||$$$r   ArgSpeczargs varargs varkw defaultsc                     [        U 5      n[        UR                  UR                  UR                  UR
                  5      $ )z$A replacement for inspect.getargspec)r   r)   r   r   r   r   )r   specs     r   r   r   N   s-    !D499dllDJJFFr   z\s*def\s*([_\w][_\w\d]*)\s*\(c                   p    \ rS rSrSr\R                  " 5       r  S	S jrS r	S
S jr
\  SS j5       rSrg)FunctionMakerX   z
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           	         X0l         U(       Ga|  UR                  U l        U R                  S:X  a  SU l        UR                  U l        UR
                  U l        [        R                  " U5      (       Ga  [        U5      n[        US0 5      U l        S H  n	[        X	[        X5      5        M     [        U R                  5       H  u  p[        U SU
-  U5        M     [        R                   S:  a(  [        R"                  " USS 06S	S
 =U l         U l        GOR['        U R                  5      n['        U R                  5      nU R(                  (       a=  UR+                  SU R(                  -   5        UR+                  SU R(                  -   5        O"U R,                  (       a  UR+                  S5        U R,                   H/  n	UR+                  SU	-  5        UR+                  U	< SU	< 35        M1     U R.                  (       a<  UR+                  SU R.                  -   5        UR+                  SU R.                  -   5        SR1                  U5      U l        SR1                  U5      U l         UR2                  R5                  5       U l        U(       a  X l        Ub  X0l        U(       a  X@l        U(       a  XPl        U(       a  X`l        U(       a  Xpl        [;        U S5      (       d   e[;        U S5      (       d  [=        SU-  5      eg )N<lambda>_lambda___annotations__)r   r   r   r   r   r   zarg%dr   formatvaluec                     g)N r&   )vals    r   <lambda>(FunctionMaker.__init__.<locals>.<lambda>w   s    Br      *z%s=None=z**, name	signaturez%You are decorating a non function: %s)shortsignaturer    r>   r$   docr!   moduler   
isfunctionr   getattrannotationssetattr	enumerater   sysversion_infoformatargspecr?   listr   appendr   r   join__dict__copydictr   hasattr	TypeError)r   funcr>   r?   r   rA   rB   funcdictargspecaiargallargsallshortargss                 r   r	   FunctionMaker.__init__b   sW   'DIyyJ&&	||DH//DK!!$''(.#*41BB#G ,ADWW%89, (		2FAD'A+s3 3##d*--9@B(6BBCBHID'$. #499oG#'		?L||sT\\'9:$++C$,,,>?s+!__y1}5$++q!,<= - zztdjj'89$++D4::,=>%)YYw%7DN*.))L*AD' MM..0	I &N$MH K ItV$$$$t[))CdJKK *r   c                    U R                   Ul        [        U SS5      Ul        [        U S0 5      Ul        [        U SS5      Ul        [        U SS5      Ul        [        U SS5      Ul         [        R                  " S5      nUR                  R                  S	S
5      n[        U SU5      Ul        UR                  R                  U5        g! [         a    S
n N<f = f)z2Update the signature of func with the data in selfrA   NrP   r   r&   r   rE   r   r    ?rB   )r>   r    rD   r$   rN   __defaults____kwdefaults__r2   rH   	_getframe	f_globalsgetAttributeErrorr!   update)r   rS   kwframecallermodules        r   rd   FunctionMaker.update   s    		tUD1fb1#D*b9%d,<dC&t]DA	@MM!$E !??..z3?L!$,?R   	L	s   -C CCc           	         U[        U 5      -  nU=(       d    0 n[        R                  U5      nUc  [        SU-  5      eUR	                  S5      n[        U/U R                  R                  S5       Vs/ s H  oR                  S5      PM     sn-   5      n	U	 H  n
U
S;   d  M  [        U
< SU< 35      e   UR                  S5      (       d  US-  nS[        U R                  5      4-  n [        X[S	5      n[        X5        X'   nU(       a  XTS'   U R$                  " U40 UD6  U$ s  snf !   [        S
[         R"                  S9  [        U[         R"                  S9  e = f)zBMake a new function from a given template and update the signaturez not a valid function template
%sr9   ,z *)_func__call_z is overridden in

z<decorator-gen-%d>singlezError in generated code:)file
__source__)varsDEFmatchSyntaxErrorgroupsetr@   splitstrip	NameErrorendswithnext_compile_countcompileexecprintrH   stderrrd   )r   	src_templevaldict	addsourceattrssrcmor>   rX   namesnfilenamecoderS   s                 r   makeFunctionMaker.make   sT   $t*$>rYYs^:ACGHHxx{TF"1177<>< 36iio<> > ?A((Q DEE  ||D!!4KC
 (40C0C+D*FF	3(3D 
 ~"%,D"E"1> 	,3::>#CJJ's   5D)
.D. .3E!c                    [        U[        5      (       a*  UR                  5       R                  SS5      u  pU
SS nSnOSn	SnUnU " XXXV5      nSR	                  S UR                  5        5       5      nUR                  " SU-   X740 UD6$ )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.
(r9   Nr:   rm   c              3   ,   #    U  H
  nS U-   v   M     g7f)z    Nr&   ).0lines     r   	<genexpr>'FunctionMaker.create.<locals>.<genexpr>   s     F4ED&4-4Es   zdef %(name)s(%(signature)s):
)
isinstancestrrx   rw   rM   
splitlinesr   )r   objbodyr   r   rA   rB   r   r   r>   restr?   rS   r   ibodys                  r   createFunctionMaker.create   s     c3**32JDSb	IDDID4yC@		FDOO4EFFyy9EA!7057 	7r   )rE   r   rP   rA   rB   r>   r@   r?   )NNNNNNN)NF)NNNT)r    r!   r"   r#   r$   	itertoolscountr|   r	   rd   r   classmethodr   r%   r&   r   r   r-   r-   X   sG     __&N7;@D7Lr!" D 26047 7r   r-   c                     [        XS9n[        R                  U SX S9n[        U S5      (       a  U R                  Ul        U$ )z=
decorate(func, caller) decorates a function using a caller.
)rl   rk   z)return _call_(_func_, %(shortsignature)s)__wrapped__r"   )rP   r-   r   rQ   r"   )rS   callerr   funs       r   decorater      sN     6/H


9  $C t^$$,,Jr   c           	      .   Ub  [        X5      $ [        R                  " U 5      (       a:  U R                  R	                  5       nSU R                  < SU R                  < S3nO[        R
                  " U 5      (       a,  U R                  S:X  a  SnOU R                  nU R                  nO:U R                  R                  R	                  5       nU R                  R                  n[        U [         S9n[        R                  SU-  SXCU R                  U S	9$ )
z=decorator(caller) converts a caller function into a decoratorz
decorator(z2) converts functions/generators into factories of z objectsr0   r1   )rl   
_decorate_z%s(func)zreturn _decorate_(func, _call_))rA   rB   r   )r   r   isclassr    lowerrC   r$   	__class____call__rP   r-   r   r!   )r   _funcr>   rA   r   s        r   	decoratorr      s    &&v$$&+1??FOOM			F	#	#??j(D??Dnn((..0oo%%6h7HT<&"3"3    r   )_GeneratorContextManager)GeneratorContextManagerc                       \ rS rSrS rSrg)ContextManageri  c           	      <    [         R                  US[        XS9US9$ )zContext manager decoratorz.with _self_: return _func_(%(shortsignature)s))_self_rk   r   )r-   r   rP   )r   rS   s     r   r   ContextManager.__call__  s*    ##B* $ > 	>r   r&   N)r    r!   r"   r#   r   r%   r&   r   r   r   r     s    >r   r      c                 :    [         R                  " X" U0 UD65      $ r   r   r	   r   grV   ks       r   r	   r	     s    '00q!zqzBBr      c                 0    [         R                  " XX#5      $ r   r   r   s       r   r	   r	   '  s    '00!??r   c                     Sn[        U5       H1  u  p4[        X@5      (       a  Sn  O[        X5      (       d  M+  XU'   SnM3     U(       a  UR                  U 5        gg)zS
Append ``a`` to the list of the virtual ancestors, unless it is already
included.
TFN)rG   
issubclassrL   )rV   
vancestorsaddjvas        r   rL   rL   2  s\    
 C:&bCaqMC ' ! r   c                     ^ ^^ T (       d   S5       eSSR                  T 5      -  m[        R                  S4U 4S jjmUU U4S jnST-   Ul        U$ )zf
Factory of decorators turning a function into a generic function
dispatching on the given arguments.
zNo dispatch args passedz(%s,)r=   r5   c                    > U" [        U 5      [        T5      5      (       a#  [        S[        T5      [        U 5      U4-  5      eg)z5Make sure one passes the expected number of argumentszExpected %d arguments, got %d%sN)lenrR   )	argumentswrongmsgdispatch_argss      r   checkdispatch_on.<locals>.checkL  sI    Y]!344= /YEF G G 5r   c                   >^ ^^^ [        [        T 5      R                  5      n[        T	5      U::  d  [        ST
-  5      e0 mUU	U4S jmUU4S jmUU4S jnUU4S jnUU U4S jn[        R                  T ST
-  [        US9UT TTTUT S	9
$ )
z4Decorator turning a function into a generic functionzUnknown dispatch arguments %sc                  B  > T" U 5        [        [        T5      5       Vs/ s H  n/ PM     nnT	 HG  n[        XU5       H4  u  pEn[        XE5      (       d  M  XTR                  ;  d  M)  [        XV5        M6     MI     U Vs/ s H  n[        U5      PM     sn$ s  snf s  snf )z=
Get a list of sets of virtual ancestors for the given types
)ranger   zipr   __mro__rL   rv   )
types_rastypes_ttype_rar   r   typemaps
          r   r   5dispatch_on.<locals>.gen_func_dec.<locals>.vancestors\  s     %L$S%7898!28C9!$'s$;LAb!!++YY0Fu) %< " '**cCGc** :
 +s   B?Bc                     > T" U 5        / n[        U T" U 6 5       Ho  u  p#[        U5      nUS:  a  [        SU< SU< 35      eUS:X  a   Uu  n[        SX%40 5      R                  SS nOUR                  nUR                  USS 5        Mq     U$ )z/
Get a list of virtual MROs, one for each type
r9   zAmbiguous dispatch for z: r   Nr:   )r   r   RuntimeErrortyper   rL   )	r   listsr   vasn_vasr   mror   r   s	          r   	ancestors4dispatch_on.<locals>.gen_func_dec.<locals>.ancestorsh  s     %LEeZ%78C19&;<cBD DaZCBsQGR088<C))CS"X& 9 Lr   c                  *   >^  T" T 5        UUU 4S jnU$ )z=
Decorator to register an implementation for the given types
c                    > T" [        U 5      R                  [        R                  SU R                  -   5        U TT'   U $ )Nz in )r   r   operatorltr    )r   r   r   r   s    r   dec@dispatch_on.<locals>.gen_func_dec.<locals>.register.<locals>.dec  s5    nQ',,hkk6AJJ;NO!"r   r&   )r   r   r   r   s   ` r   register3dispatch_on.<locals>.gen_func_dec.<locals>.register{  s     %L
 Jr   c                     > T" U 5        / n[         R                  " T" U 6 6  H$  nUR                  [        S U 5       5      5        M&     U$ )z1
An utility to introspect the dispatch algorithm
c              3   8   #    U  H  oR                   v   M     g 7fr   )r    )r   rV   s     r   r   Kdispatch_on.<locals>.gen_func_dec.<locals>.dispatch_info.<locals>.<genexpr>  s      9SS   )r   productrL   tuple)r   lstancr   r   s      r   dispatch_info8dispatch_on.<locals>.gen_func_dec.<locals>.dispatch_info  sG     %LC (()U*;<

5 9S 99: =Jr   c                   > [        S U  5       5      n T	U   nU" U0 UD6$ ! [         a     Of = f[        R                  " T" U6 6 n[	        U5        U H!  nT	R                  U5      nUc  M  U" U0 UD6s  $    T" U0 UD6$ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr   )r   )r   rX   s     r   r   Gdispatch_on.<locals>.gen_func_dec.<locals>._dispatch.<locals>.<genexpr>  s     =}$s))}r   )r   KeyErrorr   r   r{   rb   )
r   r   re   r   r   combinationsr   r   rS   r   s
          r   	_dispatch4dispatch_on.<locals>.gen_func_dec.<locals>._dispatch  s    =}==E&EN $~"~%   %,,i.?@L&KK'=d>b>) ' $$$s   " 
//z#return _f_(%s, %%(shortsignature)s))_f_)r   defaultr   r   r   r   r   )rv   r   r   ry   r-   r   rP   )rS   argsetr   r   r   r   r   r   r   r   dispatch_strs   `    @@@r   gen_func_dec!dispatch_on.<locals>.gen_func_decR  s     ^D)../=!V+;lJKK
	+	&			%$ ##7,FY(D
i'T	 $ ; 	;r   dispatch_on)rM   r   ner    )r   r   r   r   s   ` @@r   r  r  D  sQ    
 333=TYY}55L'{{ GV;p *L8Lr   r   )$r$   
__future__r   collectionsr   r   r   rerH   __version__rI   r   r   object
namedtupler)   r   r}   rr   r-   r   r   
contextlibr   ImportErrorr   r   r	   initr   r   n_argsr   contextmanagerrL   r  r&   r   r   <module>r     s;  < &     	 
t&( ($% 
 
 ,.G 	jj12J7F J7Z
8O3
>- > .778	TYY	Q;t||C 'Nq[T\\q[@ 'N>*
$gi  ONOs   D D$#D$