
    yIf                        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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     W/var/www/piapp/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                T   t          j        ||          5 }t          | |||          }|d|\  }}}	t          | ||||          }
|
;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)r   r'   r+   r,   r   tag_keyversionmajorminor_archexe_dataexeargss                 r   r*   r*   :   sn   		+s	+	+ w#IwWEE%OE5!!)Wc7LQQD#IwSII' (IC"E5$TA                                         s$   AB3BBBB!$B!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_keyr9   ipr:   s	            r   r1   r1   J   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
ValueErrorr@   )r   r'   r,   r2   r   arch_strrE   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groupsrK   )rL   rS   errors      r   rJ   rJ   j   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_versionrK   r@   )r   r'   r,   r2   	candidaterE   sys_versions          r   r/   r/   u   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)   )rT   ).0is     r   	<genexpr>z parse_version.<locals>.<genexpr>   s0      SSq1=QdSSSSSSr    rO   zversion is not string: )rP   rQ   rR   rS   tuplerW   rK   )version_strrS   rX   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| |           d S )Nz5PEP-514 violation in Windows Registry at %s error: %s)LOGGERwarning)rB   whats     r   r@   r@      s     
NNJDRVWWWWWr    c                     t                       d t                      D             } t          d                    t	          |                                d S )Nc                ,    g | ]}t          |          S  )repr)r`   r-   s     r   
<listcomp>z_run.<locals>.<listcomp>   s    >>>4DJJ>>>r    
)r   r   printrC   sorted)interpreterss    r   _runrr      sM    MMM>>+;+=+=>>>L	$))F<((
)
)*****r    __main__)__doc__
__future__r   rA   rR   r   loggingr   r   __name__rf   r   r   r   r   r%   r*   r1   r0   rJ   r/   r[   r@   rr   rk   r    r   <module>rx      sL   b b " " " " " " 				 				  * * * * * * * *	8		    J J J         *    
 
 
  X X X+ + + zDFFFFF r    