
    Vi                         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Jr  S SK	J
r
  S SKJr  \R                  S    S:H  rSrSrSS	 jrSS
 jrS rS rS r  SS jr\4S jrS\4S jrS rg)    )print_functionN)	iterutils)camel2under)FunctionBuilder   Fz    c           	         [         R                  " U 5      (       d  [         R                  " U 5      (       dd  [         R                  " U 5      (       dI  [	        U S5      (       a8  [        [        U SS 5      [        5      (       a  U R                  $ U R                  n [        [        U SS 5      [        5      (       a  U R                  $ [        R                  " U 5      n[        UR                   Vs/ s H  n[        U[        5      PM     sn5      (       d  [        S5      eU(       a3  [        U [        R                   5      (       a  UR                  SS  Ul        U$ s  snf )N__call__
_sinter_fbzUdoes not support anonymous tuple arguments or any other strange args for that matter.   )inspect
isfunctionismethod	isbuiltinhasattr
isinstancegetattrr   r
   r	   	from_funcallargsstr	TypeErrortypes
MethodType)f	drop_selfretas       ^/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/face/sinter.pyget_fbr      s   q!!W%5%5a%8%8a  ga&<&<gat4oFF<<JJ'!\40/BB||

#
#A
&CCHH5Hq
1c"H566 F G 	GZ5#3#34488AB<J 6s   0Ec                 6    [        U 5      nUR                  US9$ )N)only_required)r   get_arg_names)r   r!   fbs      r   r"   r"   )   s    	B-88    c           	      4   Sn[        U 5      nUR                  5       nUR                  U5        UR                  (       a  U " S0 UD6$ [	        UR                  5        VVs/ s H  u  pVXSR                  5       ;   d  M  XV4PM     snn5      nU " S0 UD6$ s  snnf )NT )r   get_defaults_dictupdatevarkwdictitemsr"   )r   injectables__traceback_hide__r#   
all_kwargskvkwargss           r   injectr2   /   s    	B%%'Jk"	xx:j&6&6&8T&8daAAQAQAS<S6A6&8TUF;v; Us    B
=B
c           	         / n[        U [        R                  5      (       a\  [        U S[        U SS 5      5      nU(       a%  UR	                  UR
                  R                  5        [        U S[        U SS 5      5      n [        U 5      nUR                  (       a  UR                  SUR                  5        SR                  U5      UR                  UR                  5       4$ )Nim_self__self__im_func__func__r   .)r   r   r   r   append	__class____name__r   moduleinsertjoinnameget_invocation_str)obj	ctx_partsr4   r#   s       r   get_callable_labelsrC   >   s    I#u''((#y'#z4*HIW..778c9gc:t&DE	B	yyBII& 88I)>)>)@@@r$   c                 l   [        U/5      n[        5       n[        5       n[        X5       H  u  pg[        U5      nUR                  5       n	UR	                  5       n
[
        R                  " XR                  S9u  pUR                  U5        U[        U5      U-
  -  nUR                  U5        M     XT4$ )N)key)	setzipr   r"   r'   r   	partition__contains__r(   )	func_listprovides
inner_nameprovided_sofaroptional_sofarrequired_sofarr   pr#   	arg_namesdefaults_dict	defaultedundefaulteds                r   chain_argspecrU   T   s    *&NUNUNI( AY$$&	,,.!*!4!4YD^D^!_	i( 	#k*^;;a  ) ))r$   c                 T   U (       d  gUc  [        U/5      nUR                  US   5        [        U S   5      R                  n[	        U Vs/ s H  oU4PM     sn5      n	[        U	R                  5       5      n
SR                  U
 Vs/ s H  nUS   U;   d  M  SU-  PM     sn5      n[        U-  nU[        -   nSR                  US   5      nU< SU< SU< S3n[        U SS  USS  X#US-   5      nU< S	3nU< S
U< SU< S3nSR                  UUUU-   /5      $ s  snf s  snf )N r   z, z%s=%szdef (z):
r   z__traceback_hide__ = True
zreturn funcs[z](z)
)
rF   r(   r   r   r*   sortedr+   r>   _INDENTbuild_chain_str)funcsparamsrL   params_sofarlevelfunc_aliaser
func_names
inner_argsr   inner_arg_dictinner_arg_itemskvouter_indentinner_indentouter_arg_strdef_strbody_strhtb_str
return_strs                      r   r[   r[   l   s5   J<(q	"a!&&J:6:aq6:67N^1134O? 5?R e|3 )GbL? 5 6JU?L')LIIfQi(M#/]KGuQRy&*jPUXYPYZH 2>?G/;UJOJ77GXw';<== 75s   D 	D%	D%c                 4    [        XU5      n[        XBSU 0US9$ )Nr\   )verbose)r[   compile_code)r\   r]   rL   rn   call_strs        r   compile_chainrq      s"    uj9Hw.>PPr$   c                 j   [         R                  " U R                  S5      5      R                  5       S S nSU< SU< S3n[	        XS5      nU(       a  [        U 5        [        (       a  [        Xb5        O[        S5        [        U 5      S U R                  S5      U4[        R                  U'   X!   $ )	Nutf8   z<sinter generated  >singlezexec code in envT)hashlibsha1encode	hexdigestcompileprintPY3execlen
splitlines	linecachecache)code_strr?   envrn   	code_hashunique_filenamecodes          r   ro   ro      s    X__V45??A#2FI48)DO8h7Dh
sT  	HD!	(IOOO$ 9r$   c                     [        U 5      n [        U5      n[        U5      n[        X/-   US/-   U5      u  pV[        XS-
  5      nXSU-  -  n[	        X/-   U/U-   U5      n	U	[        U5      [        U5      4$ )Nr&   )listrF   rU   tuplerq   )
r\   rK   
final_funcpreprovidedrL   reqsopts
unresolvedr   chains
             r   
make_chainr      s    KEH~Hk"Ku|3'2$
<JD t)*J%&D%,.&8+Z9E#d)S_,,r$   )T)F)Nr   NN)
__future__r   sysr   r   rx   r   boltonsr   boltons.strutilsr   boltons.funcutilsr   version_infor~   _VERBOSErZ   r   r"   r2   rC   rU   r[   rq   ro   r   r&   r$   r   <module>r      s    & 
      ( -
a
*9A,*0 IJ26>2 6> Q
 &*8 (-r$   