
    .Ph                        d Z ddlmZ ddlZddlZddlZddlmZmZ  ee	          Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Ze	dk    r e             dS dS )z\Implement https://www.python.org/dev/peps/pep-0514/ to discover interpreters - Windows only.    )annotationsN)basicConfig	getLoggerc              #  l   K   d}	 	 t          j        | |          V  n# t          $ r Y d S w xY w|dz  }0)Nr   T   )winregEnumKeyOSError)keyats     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/virtualenv/discovery/windows/pep514.py	enum_keysr      s`      	
B	.b)))))) 	 	 	EE	
as    
--c                \    	 t          j        | |          d         S # t          $ r Y d S w xY w)Nr   )r   QueryValueExr
   )r   
value_names     r   	get_valuer      sA    "3
33A66   tts    
++c               #     K   t           j        ddddft           j        ddt           j        dft           j        ddt           j        dffD ]!\  } }}}}t          | ||||          E d {V  "d S )NHKEY_CURRENT_USERzSoftware\Pythonr   @   HKEY_LOCAL_MACHINE    )r   r   r   KEY_WOW64_64KEYKEY_WOW64_32KEYprocess_set)hive	hive_namer   flagsdefault_archs        r   discover_pythonsr      s      		!#68JArR		"$8:LfNdfhi		"$8:LfNdfhi6 J J1ie\
 tYULIIIIIIIIIIJ J    c              #    K   	 t          j        | |dt           j        |z            5 }t          |          D ]!}|dk    r	t	          ||||          E d {V  "	 d d d            d S # 1 swxY w Y   d S # t
          $ r Y d S w xY w)Nr   
PyLauncher)r   	OpenKeyExKEY_READr   process_companyr
   )r   r   r   r   r   root_keycompanys          r   r   r   '   s     dCFOe,CDD 	W$X.. W Wl***9gxVVVVVVVVVVW	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W
    s4   $A5 2A(A5 (A,,A5 /A,0A5 5
BBc           	   #     K   t          j        ||          5 }t          |          D ]}t          | ||||          }||V  	 d d d            d S # 1 swxY w Y   d S N)r   r#   r   process_tag)r   r'   r&   r   company_keytagspecs          r   r%   r%   2   s      		(G	,	, [)) 	 	Cy';\RRD


	                 s   ,AAAc                z   t          j        ||          5 }t          | |||          }|w|\  }}}	t          | ||||          }
|
Nt	          | |||          }|,|\  }}t          | |||          }||||
|||fcd d d            S 	 d d d            d S 	 d d d            d S 	 d d d            d S # 1 swxY w Y   d S r)   )r   r#   load_version_dataload_arch_dataload_exeload_threaded)r   r'   r+   r,   r   tag_keyversionmajorminor_archexe_dataexeargsthreadeds                  r   r*   r*   :   s   		+s	+	+ w#IwWEE%OE5!!)Wc7LQQD#IwSII' (IC,YgNNH"E5$#tK                                         s$   A#B0B0B0"B00B47B4c                b   |  d| d| }	 t          j        || d          5 }|5  t          |d          }|Ct          |d           }|t          |d           n t          j                            |d          }|Kt          j                            |          r,t          |d          }||fcd d d            cd d d            S t          |d|            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n## t          $ r t          | dd	           Y nw xY wd S )
N/z\InstallPathExecutablePathz#no ExecutablePath or default for itz
python.exeExecutableArgumentszcould not load exe with value z/InstallPathmissing)	r   r#   r   msgospathjoinexistsr
   )	r   r'   r+   r,   key_pathip_keyr:   ipr;   s	            r   r1   r1   K   sD   --g----H2ks+@+@+@AA 	BVV 	B 	BF$455C{vt,,:"GHHHH ',,r<88C27>>##6#6 )>??Dy	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B @3@@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B  2 2 2x%%%y1111124sj   D D B
C)1D =D 
C)D )C-	-D 0C-	1D 4D  DD DD D,+D,c                    t          |d          }|B|  d| d| d}	 t          |          S # t          $ r}t          ||           Y d }~nd }~ww xY w|S )NSysArchitecturer>   z/SysArchitecture)r   
parse_arch
ValueErrorrB   )r   r'   r,   r3   r   arch_strrG   sys_archs           r   r0   r0   `   s    "344HAA'AACAAA	$h''' 	$ 	$ 	$(########	$s   . 
AAAc                   t          | t                    rXt          j        d|           }|r;t	          t          t          |                                                              S d|  }nd| }t          |          )Nz
^(\d+)bit$invalid format zarch is not string: )	
isinstancestrrematchintnextitergroupsrM   )rN   rU   errors      r   rL   rL   k   s}    (C   411 	3tD0011222,(,,3x33
U

r    c                    t          |d          |  d| d| df||  d| d| ffD ]@\  }}|9	 t          |          c S # t          $ r}t          ||           Y d }~8d }~ww xY wAd S )N
SysVersionr>   z/SysVersion)r   parse_versionrM   rB   )r   r'   r,   r3   	candidaterG   sys_versions          r   r/   r/   v   s    	7L	)	)i+T+T'+T+TC+T+T+TU	,,W,,s,,-  + +	8  +$Y///// + + +Hk********+ !
 4s   A
A%A  A%c                    t          | t                    rHt          j        d|           }|r+t	          d |                                D                       S d|  }nd| }t          |          )Nz^(\d+)(?:\.(\d+))?(?:\.(\d+))?$c              3  <   K   | ]}|t          |          nd V  d S r)   )rV   ).0is     r   	<genexpr>z parse_version.<locals>.<genexpr>   s0      SSq1=QdSSSSSSr    rQ   zversion is not string: )rR   rS   rT   rU   tuplerY   rM   )version_strrU   rZ   s      r   r]   r]      s~    +s## :;[II 	TSSELLNNSSSSSS/+//9+99
U

r    c                   t          |d          }|Lt          |t                    rd|                                v rdS n|  d| d| d}t	          |d|           t          t          j        d|t          j                            S )	NDisplayNamefreethreadedTr>   z/DisplayNamezdisplay name is not string: z^\d+(\.\d+){0,2}t$)r   )	r   rR   rS   lowerrB   boolrT   rU   
IGNORECASE)r   r'   r,   r3   display_namerG   s         r   r2   r2      s    Wm44LlC(( 	K!3!3!5!555t 6 $AAgAAAAAHIIIJJJ.2=IIIJJJr    c                >    t                               d| |           d S )Nz5PEP-514 violation in Windows Registry at %s error: %s)LOGGERwarning)rD   whats     r   rB   rB      s     
NNJDRVWWWWWr    c                     t                       d t                      D             } t          d                    t	          |                                d S )Nc                ,    g | ]}t          |          S  )repr)rb   r-   s     r   
<listcomp>z_run.<locals>.<listcomp>   s    >>>4DJJ>>>r    
)r   r   printrE   sorted)interpreterss    r   _runr{      sM    MMM>>+;+=+=>>>L	$))F<((
)
)*****r    __main__)__doc__
__future__r   rC   rT   r   loggingr   r   __name__ro   r   r   r   r   r%   r*   r1   r0   rL   r/   r]   r2   rB   r{   rt   r    r   <module>r      s^   b b " " " " " " 				 				  * * * * * * * *	8		    J J J      "  *    
 
 
  	K 	K 	KX X X+ + + zDFFFFF r    