B
^B] @ s d Z ddlmZmZmZ ddlZddlZddlmZm Z ddl
Z
e
jrPddlZnddl
Ze eZdd Zdd Zd d
Zdd Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedkre dS ) z[Implement https://www.python.org/dev/peps/pep-0514/ to discover interpreters - Windows only )absolute_importprint_functionunicode_literalsN)basicConfig getLoggerc c s@ d}x6yt | |V W n tk
r. P Y nX |d7 }qW d S )Nr )winregEnumKeyOSError)keyat r
T/opt/alt/python37/lib/python3.7/site-packages/virtualenv/discovery/windows/pep514.py enum_keys s r c C s* yt | |d S tk
r$ d S X d S )Nr )r QueryValueExr
)r Z
value_namer
r
r get_value s r c c sj xdt jddddft jddt jdft jddt jdfgD ].\} }}}}xt| ||||D ]
}|V qTW q4W d S )NHKEY_CURRENT_USERzSoftware\Pythonr @ HKEY_LOCAL_MACHINE )r r r ZKEY_WOW64_64KEYKEY_WOW64_32KEYprocess_set)hive hive_namer flagsdefault_archspecr
r
r discover_pythons$ s "r c c sz y`t | |dt j|B @}x8t|D ],}|dkr2q$xt||||D ]
}|V qBW q$W W d Q R X W n tk
rt Y nX d S )Nr Z
PyLauncher)r OpenKeyExKEY_READr process_companyr
)r r r r r root_keycompanyr r
r
r r . s r c c sL t ||6}x.t|D ]"}t| ||||}|d k r|V qW W d Q R X d S )N)r r r process_tag)r r" r! r company_keytagr r
r
r r : s
r c C s t ||l}t| |||}|d k rt|\}}} t| ||||}
|
d k rtt| |||}|d k rt|\}}
||||
||
fS W d Q R X d S )N)r r load_version_dataload_arch_dataload_exe)r r" r$ r% r tag_keyversionmajorminor_archZexe_dataexeargsr
r
r r# B s
r# c
C s d | ||}yt|d |}|~ t|d}|d krlt|d }|d krZt|d ntj|td}|d k rtj |rt|d}||fS t|d | W d Q R X W d Q R X W n& t
k
r td |d d
Y nX d S )Nz{}/{}/{}z{}\InstallPathZExecutablePathz#no ExecutablePath or default for itz
python.exeZExecutableArgumentsz could not load exe with value {}z{}/{}ZInstallPathmissing)formatr r r msgospathjoinstrexistsr
) r r" r$ r% key_pathZip_keyr/ ipr0 r
r
r r( O s"
(r( c
C sZ t |d}|d k rVd| ||}yt|S tk
rT } zt|| W d d }~X Y nX |S )NZSysArchitecturez{}/{}/{}/SysArchitecture)r r2
parse_arch
ValueErrorr3 )r r" r% r) r arch_strr9 Zsys_archr
r
r r' f s
r' c C sV t | tjr