
    =Ґi                    (   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dl	m
Z
mZmZ dZddZd Z ej                   d	       G d
 d             Z G d dej$                        Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )annotationsN   )_get_exe_version_outputdetect_exe_versionversion_tuple)z.COMz.EXEz.BATz.CMDc                   t         j                  j                  t        j                  d      | t        j
                  d      z         }t        j                  |t         j                  t         j                  z        r!t         j                  j                  |      s|S t         j                  dk7  r| S g }t        t        dd      r<|j                  t         j                  j                  t        j                               |j                  t        j                                 t         j"                  j%                  d      x}rB|j'                  t)        d |j+                  t         j                  j,                                     t         j"                  j%                  d      }|t.        }n/t1        d |j+                  t         j,                        D              }g }t3        t         j                  j4                  |      D ]  }t         j                  j7                  |      }||v r'|j                  |       |D ]  }t         j                  j                  ||  |       }t        j                  |t         j                  t         j                  z        s]t         j                  j                  |      r}|c c S   | S )	NscriptsEXEntfrozenFPATHPATHEXTc              3  &   K   | ]	  }|s|  y wN ).0exts     P/var/www/descvideos/venv/lib/python3.12/site-packages/yt_dlp/utils/_jsruntime.py	<genexpr>z_find_exe.<locals>.<genexpr>*   s     ESSEs   )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_exer9      s   WW\\9%9++E224F 
yy277*+BGGMM&4I	ww$E sHe$RWW__S^^45	LLzz~~f%%t%VD$**RWW__"=>?jjnnY'G EGMM"**$=EEGBGG$$e, 	!!$'Wv 	CWW\\$8*SE(:;Fyy277!23BGGMM&<Q		 O    c                    | st        |      S t        j                  j                  |       r t        j                  j	                  | |      S | S r   )r9   r   r   r   r   )r   r2   s     r   _determine_runtime_pathr<   ;   s:    ""	ww}}Tww||D(++Kr:   T)r   c                  D    e Zd ZU ded<   ded<   ded<   ded<   dZded	<   y
)JsRuntimeInfostrr    r   versionztuple[int, ...]r   Tbool	supportedN)__name__
__module____qualname____annotations__rB   r   r:   r   r>   r>   C   s!    
I
IL""Itr:   r>   c                  `    e Zd ZddZej
                  dd       Zej                  dd       Z	y)	JsRuntimeNc                    || _         y r   )_path)selfr   s     r   __init__zJsRuntime.__init__M   s	    
r:   c                "    | j                         S r   )_inforK   s    r   infozJsRuntime.infoP   s    zz|r:   c                    t         r   )NotImplementedErrorrO   s    r   rN   zJsRuntime._infoT   s    !!r:   r   )returnzJsRuntimeInfo | None)
rC   rD   rE   rL   	functoolscached_propertyrP   abcabstractmethodrN   r   r:   r   rH   rH   L   s;       	" "r:   rH   c                      e Zd ZdZd Zy)DenoJsRuntime)   r   r   c                    t        | j                  d      }t        |dg      }|sy t        |dd      }t	        |d      }t        d||||| j                  k\        S )Ndeno	--versionz^deno (\S+)unknownTlenientr    r   r@   r   rB   r<   rJ   r   r   r   r>   MIN_SUPPORTED_VERSIONrK   r   outr@   vts        r   rN   zDenoJsRuntime._info\   sd    &tzz6:%d[M:$S.)D7D1dG2D6668 	8r:   NrC   rD   rE   rc   rN   r   r:   r   rY   rY   Y   s    %	8r:   rY   c                      e Zd ZdZd Zy)BunJsRuntime)r   r      c                    t        | j                  d      }t        |dg      }|sy t        |dd      }t	        |d      }t        d||||| j                  k\        S )Nbunr]   z^(\S+)r^   Tr_   ra   rb   rd   s        r   rN   zBunJsRuntime._infok   sd    &tzz59%d[M:$S)Y?7D1T7"D6668 	8r:   Nrg   r   r:   r   ri   ri   h       &	8r:   ri   c                      e Zd ZdZd Zy)NodeJsRuntime)   r   r   c                    t        | j                  d      }t        |dg      }|sy t        |dd      }t	        |d      }t        d||||| j                  k\        S )Nnoder]   z^v(\S+)r^   Tr_   ra   rb   rd   s        r   rN   zNodeJsRuntime._infoz   sd    &tzz6:%d[M:$S*i@7D1dG2D6668 	8r:   Nrg   r   r:   r   ro   ro   w   rm   r:   ro   c                      e Zd ZdZd Zy)QuickJsRuntime)i     	   c                    t        | j                  d      }t        |dgd      }|sy d|v }t        |dd      }t	        |d      }|rt        d	||||d
kD        S t        d||||| j                  k\        S )Nqjsz--helpT)ignore_return_codez
QuickJS-ngz"^QuickJS(?:-ng)?\s+version\s+(\S+)r^   r_   z
quickjs-ng)r   ra   quickjsrb   )rK   r   re   is_ngr@   rf   s         r   rN   zQuickJsRuntime._info   s    &tzz59%dXJ4P#$S*OQZ[7D1 !gRt)% % wbD6668 	8r:   Nrg   r   r:   r   rt   rt      s    )8r:   rt   )r2   r?   rS   r?   )
__future__r   rV   dataclassesrT   os.pathr   r"   r   _utilsr   r   r   r-   r9   r<   	dataclassr>   ABCrH   rY   ri   ro   rt   r   r:   r   <module>r      s    " 
    
  N N 5 (V d#  $
" 
"8I 889 88I 88Y 8r:   