
    i                    $   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SK	J
r
JrJr  SrSS jrS r\R                   " SS	9 " S
 S5      5       r " S S\R$                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    )annotationsN   )_get_exe_version_outputdetect_exe_versionversion_tuple)z.COMz.EXEz.BATz.CMDc                   [         R                  R                  [        R                  " S5      U [        R
                  " S5      -   5      n[         R                  " U[         R                  [         R                  -  5      (       a&  [         R                  R                  U5      (       d  U$ [         R                  S:w  a  U $ / n[        [        SS5      (       a<  UR                  [         R                  R                  [        R                  5      5        UR                  [         R                   " 5       5        [         R"                  R%                  S5      =n(       aB  UR'                  [)        S UR+                  [         R                  R,                  5      5      5        [         R"                  R%                  S5      nUc  [.        nO/[1        S UR+                  [         R,                  5       5       5      n/ n[3        [         R                  R4                  U5       H  n[         R                  R7                  U5      nXv;   a  M)  UR                  U5        U H  n[         R                  R                  X0 U 35      n[         R                  " U[         R                  [         R                  -  5      (       d  Mc  [         R                  R                  U5      (       a  M  Us  s  $    M     U $ )	NscriptsEXEntfrozenFPATHPATHEXTc              3  6   #    U  H  o(       d  M  Uv   M     g 7fN ).0exts     D/app/mltbenv/lib/python3.13/site-packages/yt_dlp/utils/_jsruntime.py	<genexpr>_find_exe.<locals>.<genexpr>*   s     E$=SSS$=s   
	)ospathjoin	sysconfigget_pathget_config_varaccessF_OKX_OKisdirnamegetattrsysappenddirname
executablegetcwdenvirongetextendfiltersplitpathsep_FALLBACK_PATHEXTtuplemaprealpathnormcase)	basenamebinarypathsr   pathextextsvisitednormedr   s	            r   	_find_exer:      s   WW\\9%9++E224F 
yy277*++BGGMM&4I4I	ww$E sHe$$RWW__S^^45	LLzz~~f%%t%VD$**RWW__"=>?jjnnY'G EGMM"**$=EEGBGG$$e,!!$'vCWW\\$*SE(:;Fyy277!233BGGMM&<Q<Q  - O    c                    U (       d  [        U5      $ [        R                  R                  U 5      (       a  [        R                  R	                  X5      $ U $ r   )r:   r   r   r    r   )r   r3   s     r   _determine_runtime_pathr=   ;   s;    ""	ww}}Tww||D++Kr;   T)r   c                  L    \ rS rSr% S\S'   S\S'   S\S'   S\S'   SrS	\S
'   Srg)JsRuntimeInfoC   strr!   r   versionztuple[int, ...]r   Tbool	supportedr   N)__name__
__module____qualname____firstlineno____annotations__rD   __static_attributes__r   r;   r   r?   r?   C   s!    
I
IL""Itr;   r?   c                  n    \ rS rSrSS jr\R                  SS j5       r\R                  SS j5       r
Srg)		JsRuntimeL   Nc                    Xl         g r   _path)selfr   s     r   __init__JsRuntime.__init__M   s    
r;   c                "    U R                  5       $ r   )_inforQ   s    r   infoJsRuntime.infoP   s    zz|r;   c                    [         er   )NotImplementedErrorrV   s    r   rU   JsRuntime._infoT   s    !!r;   rO   r   )returnzJsRuntimeInfo | None)rE   rF   rG   rH   rR   	functoolscached_propertyrW   abcabstractmethodrU   rJ   r   r;   r   rL   rL   L   s;       	" "r;   rL   c                      \ rS rSrSrS rSrg)DenoJsRuntimeY   )   r   r   c                    [        U R                  S5      n[        US/5      nU(       d  g [        USS5      n[	        USS9n[        SXUX@R                  :  S9$ )Ndeno	--versionz^deno (\S+)unknownTlenientr!   r   rB   r   rD   r=   rP   r   r   r   r?   MIN_SUPPORTED_VERSIONrQ   r   outrB   vts        r   rU   DenoJsRuntime._info\   s`    &tzz6:%d[M:$S.)D7D1d26668 	8r;   r   NrE   rF   rG   rH   rm   rU   rJ   r   r;   r   rb   rb   Y   s    %	8r;   rb   c                      \ rS rSrSrS rSrg)BunJsRuntimeh   )r   r      c                    [        U R                  S5      n[        US/5      nU(       d  g [        USS5      n[	        USS9n[        SXUX@R                  :  S9$ )Nbunrg   z^(\S+)rh   Tri   rk   rl   rn   s        r   rU   BunJsRuntime._infok   s`    &tzz59%d[M:$S)Y?7D1T"6668 	8r;   r   Nrr   r   r;   r   rt   rt   h       &	8r;   rt   c                      \ rS rSrSrS rSrg)NodeJsRuntimew   )   r   r   c                    [        U R                  S5      n[        US/5      nU(       d  g [        USS5      n[	        USS9n[        SXUX@R                  :  S9$ )Nnoderg   z^v(\S+)rh   Tri   rk   rl   rn   s        r   rU   NodeJsRuntime._infoz   s`    &tzz6:%d[M:$S*i@7D1d26668 	8r;   r   Nrr   r   r;   r   r|   r|   w   rz   r;   r|   c                      \ rS rSrSrS rSrg)QuickJsRuntime   )i     	   c                    [        U R                  S5      n[        US/SS9nU(       d  g SU;   n[        USS5      n[	        USS9nU(       a  [        S	XUUS
:  S9$ [        SXUXPR                  :  S9$ )Nqjsz--helpT)ignore_return_codez
QuickJS-ngz"^QuickJS(?:-ng)?\s+version\s+(\S+)rh   ri   z
quickjs-ng)r   rk   quickjsrl   )rQ   r   ro   is_ngrB   rp   s         r   rU   QuickJsRuntime._info   s    &tzz59%dXJ4P#$S*OQZ[7D1 !Rt)% % b6668 	8r;   r   Nrr   r   r;   r   r   r      s    )8r;   r   )r3   rA   r\   rA   )
__future__r   r_   dataclassesr]   os.pathr   r#   r   _utilsr   r   r   r.   r:   r=   	dataclassr?   ABCrL   rb   rt   r|   r   r   r;   r   <module>r      s    " 
    
  N N 5 (V d#  $
" 
"8I 889 88I 88Y 8r;   