B aK @ 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)keyZat 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. ipr/ 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 r1 parse_arch ValueErrorr2 )r r! r$ r( r arch_strr8 Zsys_archr r r r&