Ë
    –2Úiv¡  ã                  óR  — U d Z 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 ddlmZ ddlZe
rddlmZmZ e
s ej&                  «       dk(  rddlZddlmZ n G d	„ d
«      Z e«       Zded<    G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ d«      Zy)zo
Environment info about Microsoft Compilers.

>>> getfixture('windows_only')
>>> ei = EnvironmentInfo('amd64')
é    )ÚannotationsN)ÚTYPE_CHECKINGÚ	TypedDict)Úunique_everseen)ÚLiteralStringÚNotRequiredÚWindows)Úenvironc                  ó   — e Zd ZdZdZdZdZy)ÚwinregN)Ú__name__Ú
__module__Ú__qualname__Ú
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOT© ó    úF/var/www/html/acx/venv/lib/python3.12/site-packages/setuptools/msvc.pyr   r       s   „ Øˆ
Ø ÐØ!ÐØ Ñr   r   zdict[str, str]r
   c                  ó’   — e Zd ZdZ ej
                  dd«      j                  «       Zdd„Ze	d„ «       Z
d„ Zd„ Zddd„Zddd	„Zdd
„Zy)ÚPlatformInfoz�
    Current and Target Architectures information.

    Parameters
    ----------
    arch: str
        Target architecture.
    Úprocessor_architectureÚ c                óN   — |j                  «       j                  dd«      | _        y )NÚx64Úamd64)ÚlowerÚreplaceÚarch)Úselfr    s     r   Ú__init__zPlatformInfo.__init__5   s   € Ø—J‘J“L×(Ñ(¨°Ó8ˆ�	r   c                óX   — | j                   | j                   j                  d«      dz   d S )zs
        Return Target CPU architecture.

        Return
        ------
        str
            Target CPU
        Ú_é   N)r    Úfind©r!   s    r   Ú
target_cpuzPlatformInfo.target_cpu8   s(   € ð �y‰y˜Ÿ™Ÿ™¨Ó,¨qÑ0Ð2Ð3Ð3r   c                ó    — | j                   dk(  S )z‡
        Return True if target CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        Úx86©r(   r'   s    r   Útarget_is_x86zPlatformInfo.target_is_x86D   s   € ð �‰ %Ñ'Ð'r   c                ó    — | j                   dk(  S )zˆ
        Return True if current CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        r*   ©Úcurrent_cpur'   s    r   Úcurrent_is_x86zPlatformInfo.current_is_x86O   s   € ð ×Ñ 5Ñ(Ð(r   c                ól   — | j                   dk(  r|rdS | j                   dk(  r|rdS d| j                   z  S )uk  
        Current platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not 'Â†' if architecture is x86.
        x64: bool
            return 'd' and not 'md64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '	arget', or '' (see hidex86 parameter)
        r*   r   r   ú\x64ú\%sr.   ©r!   Úhidex86r   s      r   Úcurrent_dirzPlatformInfo.current_dirZ   sO   € ð$ × Ñ  EÒ)©gð ð	
ð × Ñ  GÒ+±ð ð	
ð
 ˜$×*Ñ*Ñ*ð	
r   c                ól   — | j                   dk(  r|rdS | j                   dk(  r|rdS d| j                   z  S )ar  
        Target platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '\x86' if architecture is x86.
        x64: bool
            return '\x64' and not '\amd64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '\current', or '' (see hidex86 parameter)
        r*   r   r   r2   r3   r+   r4   s      r   Ú
target_dirzPlatformInfo.target_dirr   sI   € ð$ —‘ 5Ò(©Wð ð	
ð —‘ 7Ò*©sð ð	
ð
 ˜$Ÿ/™/Ñ)ð	
r   c                óŠ   — |rdn| j                   }| j                  |k(  rdS | j                  «       j                  dd|z  «      S )ap  
        Cross platform specific subfolder.

        Parameters
        ----------
        forcex86: bool
            Use 'x86' as current architecture even if current architecture is
            not x86.

        Return
        ------
        str
            subfolder: '' if target architecture is current architecture,
            '\current_target' if not.
        r*   r   ú\z\%s_)r/   r(   r8   r   )r!   Úforcex86Úcurrents      r   Ú	cross_dirzPlatformInfo.cross_dirŠ   sN   € ñ  $‘%¨×)9Ñ)9ˆð �‰ 'Ò)ð ð	
ð —‘Ó"×*Ñ*¨4°¸7Ñ1BÓCð	
r   N©ÚreturnÚNone)FF©r?   Ústr©F)r   r   r   Ú__doc__r
   Úgetr   r/   r"   Úpropertyr(   r,   r0   r6   r8   r=   r   r   r   r   r   )   sW   „ ñð �'—+‘+Ð6¸Ó;×AÑAÓC€Kó9ð ñ	4ó ð	4ò	(ò	)ô
ô0
ô0
r   r   c                  ó  — e Zd ZdZej
                  ej                  ej                  ej                  fZ	dd„Z
edd„«       Zed„ «       Zed„ «       Zed„ «       Zedd„«       Zedd„«       Zed	„ «       Zed
„ «       Zedd„«       Zdd„Zd„ Zy)ÚRegistryInfozŸ
    Microsoft Visual Studio related registry information.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    c                ó   — || _         y ©N)Úpi)r!   Úplatform_infos     r   r"   zRegistryInfo.__init__³   s	   € Øˆ�r   c                 ó   — y)z€
        Microsoft Visual Studio root registry key.

        Return
        ------
        str
            Registry key
        ÚVisualStudior   r'   s    r   ÚvisualstudiozRegistryInfo.visualstudio¶   s   € ð r   c                óV   — t         j                  j                  | j                  d«      S )z
        Microsoft Visual Studio SxS registry key.

        Return
        ------
        str
            Registry key
        ÚSxS)ÚosÚpathÚjoinrO   r'   s    r   ÚsxszRegistryInfo.sxsÂ   s   € ô �w‰w�|‰|˜D×-Ñ-¨uÓ5Ð5r   c                óV   — t         j                  j                  | j                  d«      S )z|
        Microsoft Visual C++ VC7 registry key.

        Return
        ------
        str
            Registry key
        ÚVC7©rR   rS   rT   rU   r'   s    r   ÚvczRegistryInfo.vcÎ   ó   € ô �w‰w�|‰|˜DŸH™H eÓ,Ð,r   c                óV   — t         j                  j                  | j                  d«      S )z
        Microsoft Visual Studio VS7 registry key.

        Return
        ------
        str
            Registry key
        ÚVS7rX   r'   s    r   ÚvszRegistryInfo.vsÚ   rZ   r   c                 ó   — y)zƒ
        Microsoft Visual C++ for Python registry key.

        Return
        ------
        str
            Registry key
        zDevDiv\VCForPythonr   r'   s    r   Úvc_for_pythonzRegistryInfo.vc_for_pythonæ   s   € ð %r   c                 ó   — y)zq
        Microsoft SDK registry key.

        Return
        ------
        str
            Registry key
        zMicrosoft SDKsr   r'   s    r   Úmicrosoft_sdkzRegistryInfo.microsoft_sdkò   s   € ð  r   c                óV   — t         j                  j                  | j                  d«      S )z‚
        Microsoft Windows/Platform SDK registry key.

        Return
        ------
        str
            Registry key
        r	   ©rR   rS   rT   ra   r'   s    r   Úwindows_sdkzRegistryInfo.windows_sdkþ   s   € ô �w‰w�|‰|˜D×.Ñ.°	Ó:Ð:r   c                óV   — t         j                  j                  | j                  d«      S )z€
        Microsoft .NET Framework SDK registry key.

        Return
        ------
        str
            Registry key
        ÚNETFXSDKrc   r'   s    r   Ú	netfx_sdkzRegistryInfo.netfx_sdk
  s   € ô �w‰w�|‰|˜D×.Ñ.°
Ó;Ð;r   c                 ó   — y)z€
        Microsoft Windows Kits Roots registry key.

        Return
        ------
        str
            Registry key
        zWindows Kits\Installed Rootsr   r'   s    r   Úwindows_kits_rootszRegistryInfo.windows_kits_roots  s   € ð /r   c                ó†   — | j                   j                  «       s|rdnd}t        j                  j	                  d|d|«      S )a  
        Return key in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        x86: str
            Force x86 software registry.

        Return
        ------
        str
            Registry key
        r   ÚWow6432NodeÚSoftwareÚ	Microsoft)rK   r0   rR   rS   rT   )r!   Úkeyr*   Únode64s       r   Ú	microsoftzRegistryInfo.microsoft"  s5   € ð  —w‘w×-Ñ-Ô/±3‘¸MˆÜ�w‰w�|‰|˜J¨°¸SÓAÐAr   c           	     ó  — t         j                  }t         j                  }t         j                  }| j                  }| j
                  D ]>  }d}	  || ||«      d|«      }	 t        j                  ||«      d   |r ||«       c S c S  y# t        $ rC | j                  j                  «       s$	  || ||d«      d|«      }n# t        $ r Y Y Œ…w xY wY Œ‹Y Œvw xY w# t        $ r Y nw xY w	 |sŒ¤ ||«       Œ­# |r	 ||«       w w xY w)a  
        Look for values in registry in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        name: str
            Value name to find.

        Return
        ------
        str
            value
        Nr   T)
r   ÚKEY_READÚOpenKeyÚCloseKeyrp   ÚHKEYSÚOSErrorrK   r0   ÚQueryValueEx)	r!   rn   ÚnameÚkey_readÚopenkeyÚclosekeyÚmsÚhkeyÚbkeys	            r   ÚlookupzRegistryInfo.lookup5  s  € ô  —?‘?ˆÜ—.‘.ˆÜ—?‘?ˆØ�^‰^ˆØ—J‘Jò 	#ˆDØˆDð	Ù˜t¡R¨£W¨a°Ó:�ð#Ü×*Ñ*¨4°Ó6°qÑ9ñ Ù˜T—Nò ð#	#ð& øô ò Ø—w‘w×-Ñ-Ô/ð!Ù& t©R°°T«]¸A¸xÓH™øÜ"ò !Ú ð!úñ ñ	 ðûô ò ÙðúØâÙ˜T•Nøñ Ù˜T•Nð úsZ   ÁBÁ!CÂ#CÂ/CÃCÃ	CÃCÃCÃCÃCÃ	C&Ã#C6Ã%C&Ã&C6Ã6DNr>   rA   rC   )r   r   r   rD   r   r   r   r   r   ru   r"   rF   rO   rU   rY   r]   r_   ra   rd   rg   ri   rp   r   r   r   r   rH   rH   ¢   sø   „ ñð 	×ÑØ× Ñ Ø×!Ñ!Ø× Ñ ð	€Eó ð ò	ó ð	ð ñ	6ó ð	6ð ñ	-ó ð	-ð ñ	-ó ð	-ð ò	%ó ð	%ð ò	 ó ð	 ð ñ	;ó ð	;ð ñ	<ó ð	<ð ò	/ó ð	/óBó&'r   rH   c                  óÎ  — e Zd ZdZ ej
                  dd«      Z ej
                  dd«      Z ej
                  de«      Zdd d„Z	d„ Z
d	„ Zd!d
„Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zed"d„«       Zed„ «       Zed#d„«       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed$d„«       Zed$d„«       Z d$d„Z!ed%d„«       Z"y)&Ú
SystemInfozê
    Microsoft Windows and Visual Studio related system information.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    ÚWinDirr   ÚProgramFileszProgramFiles(x86)Nc                ó²   — || _         | j                   j                  | _        | j                  «       | _        |xs | j	                  «       x| _        | _        y rJ   )ÚrirK   Úfind_programdata_vs_versÚknown_vs_pathsÚ_find_latest_available_vs_verÚvs_verÚvc_ver)r!   Úregistry_inforŠ   s      r   r"   zSystemInfo.__init__q  sG   € ØˆŒØ—'‘'—*‘*ˆŒà"×;Ñ;Ó=ˆÔð %+Ò$R¨d×.PÑ.PÓ.RÐRˆŒ�d•kr   c                óä   — | j                  «       }|s+| j                  st        j                  j	                  d«      ‚t        |«      }|j                  | j                  «       t        |«      d   S )zm
        Find the latest VC version

        Return
        ------
        float
            version
        z%No Microsoft Visual C++ version foundéÿÿÿÿ)Úfind_reg_vs_versr‡   Ú	distutilsÚerrorsÚDistutilsPlatformErrorÚsetÚupdateÚsorted)r!   Úreg_vc_versÚvc_verss      r   rˆ   z(SystemInfo._find_latest_available_vs_verz  sf   € ð ×+Ñ+Ó-ˆá˜t×2Ò2Ü×"Ñ"×9Ñ9Ø7óð ô �kÓ"ˆØ�‰�t×*Ñ*Ô+Ü�g‹˜rÑ"Ð"r   c           
     óÞ  — | j                   j                  }| j                   j                  | j                   j                  | j                   j                  f}g }t        j                  | j                   j                  |«      D �]'  \  }}	 t        j                  | ||«      dt        j                  «      }|5  t        j                  |«      \  }}}	t        |«      D ][  }
t        j                  t         «      5  t#        t        j$                  ||
«      d   «      }||vr|j'                  |«       ddd«       Œ] t        |«      D ]X  }
t        j                  t         «      5  t#        t        j(                  ||
«      «      }||vr|j'                  |«       ddd«       ŒZ 	 ddd«       �Œ* t+        |«      S # t        $ r Y �ŒBw xY w# 1 sw Y   ŒôxY w# 1 sw Y   Œ—xY w# 1 sw Y   �ŒhxY w)z˜
        Find Microsoft Visual Studio versions available in registry.

        Return
        ------
        list of float
            Versions
        r   N)r…   rp   rY   r_   r]   Ú	itertoolsÚproductru   r   rs   rr   rv   ÚQueryInfoKeyÚrangeÚ
contextlibÚsuppressÚ
ValueErrorÚfloatÚ	EnumValueÚappendÚEnumKeyr”   )r!   r|   ÚvckeysÚvs_versr}   rn   r~   ÚsubkeysÚvaluesr$   ÚiÚvers               r   rŽ   zSystemInfo.find_reg_vs_versŽ  s®  € ð �W‰W×ÑˆØ—'‘'—*‘*˜dŸg™g×3Ñ3°T·W±W·Z±ZÐ@ˆØˆÜ"×*Ñ*¨4¯7©7¯=©=¸&ÓAó 	0‰IˆD�#ðÜ—~‘~ d©B¨s«G°Q¼¿¹ÓH�ð ñ 0Ü%+×%8Ñ%8¸Ó%>Ñ"�˜ Ü˜v›ò 0�AÜ#×,Ñ,¬ZÓ8ñ 0Ü#¤F×$4Ñ$4°T¸1Ó$=¸aÑ$@ÓA˜Ø gÑ-Ø#ŸN™N¨3Ô/÷0ð 0ð0ô
 ˜w›ò 0�AÜ#×,Ñ,¬ZÓ8ñ 0Ü#¤F§N¡N°4¸Ó$;Ó<˜Ø gÑ-Ø#ŸN™N¨3Ô/÷0ð 0ñ0÷0ñ 0ð	0ô" �g‹Ðøô ò Úðú÷
0ð 0ú÷
0ð 0ú÷0ñ 0úsO   Â,F:Â:AG"Ã;8G
	Ä31G"Å$5G	Æ
G"Æ:	GÇGÇ
GÇG"ÇGÇG"Ç"G,	c                óæ  — i }d}	 t        j                  |«      }|D ]Ÿ  }	 t         j                  j	                  ||d«      }t        |dd¬«      5 }t        j                  |«      }ddd«       d   }t        j                  t         j                  j	                  |d«      «       ||| j                  |d	   «      <   Œ¡ |S # t        $ r |cY S w xY w# 1 sw Y   ŒmxY w# t        t        f$ r Y ŒÒw xY w)
zé
        Find Visual studio 2017+ versions from information in
        "C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances".

        Return
        ------
        dict
            float version as key, path as value.
        z9C:\ProgramData\Microsoft\VisualStudio\Packages\_Instancesz
state.jsonÚrtzutf-8)ÚencodingNÚinstallationPathúVC\Tools\MSVCÚinstallationVersion)
rR   Úlistdirrv   rS   rT   ÚopenÚjsonÚloadÚ_as_float_versionÚKeyError)	r!   Úvs_versionsÚinstances_dirÚhashed_namesrx   Ú
state_pathÚ
state_fileÚstateÚvs_paths	            r   r†   z#SystemInfo.find_programdata_vs_vers­  sþ   € ð )+ˆØTˆð	ÜŸ:™: mÓ4ˆLð !ò 	ˆDðäŸW™WŸ\™\¨-¸¸|ÓL�
Ü˜* d°WÔ=ð 2ÀÜ ŸI™I jÓ1�E÷2àÐ 2Ñ3�ô —
‘
œ2Ÿ7™7Ÿ<™<¨Ð1AÓBÔCð ð ˜D×2Ñ2°5Ð9NÑ3OÓPÒQð	ð( Ðøô1 ò 	àÒð	ú÷2ð 2ûô œXÐ&ò áðús;   †C ¡/CÁCÁ&ACÃCÃCÃC	ÃCÃC0Ã/C0c                óZ   — t        dj                  | j                  d«      dd «      «      S )zç
        Return a string version as a simplified float version (major.minor)

        Parameters
        ----------
        version: str
            Version.

        Return
        ------
        float
            version
        ú.Né   )rŸ   rT   Úsplit)Úversions    r   r³   zSystemInfo._as_float_version×  s(   € ô �S—X‘X˜gŸm™m¨CÓ0°°!Ð4Ó5Ó6Ð6r   c                óò   — t         j                  j                  | j                  d| j                  z  «      }| j
                  j                  | j
                  j                  d| j                  z  «      xs |S )zp
        Microsoft Visual Studio directory.

        Return
        ------
        str
            path
        zMicrosoft Visual Studio %0.1fú%0.1f)rR   rS   rT   ÚProgramFilesx86r‰   r…   r   r]   )r!   Údefaults     r   ÚVSInstallDirzSystemInfo.VSInstallDirè  sX   € ô —'‘'—,‘,Ø× Ñ Ð"AÀDÇKÁKÑ"Oó
ˆð
 �w‰w�~‰~˜dŸg™gŸj™j¨'°D·K±KÑ*?Ó@ÒKÀGÐKr   c                óÊ   — | j                  «       xs | j                  «       }t        j                  j	                  |«      s!d}t
        j                  j                  |«      ‚|S )zm
        Microsoft Visual C++ directory.

        Return
        ------
        str
            path
        z(Microsoft Visual C++ directory not found)Ú	_guess_vcÚ_guess_vc_legacyrR   rS   Úisdirr�   r�   r‘   )r!   rS   Úmsgs      r   ÚVCInstallDirzSystemInfo.VCInstallDirú  sO   € ð �~‰~ÓÒ: 4×#8Ñ#8Ó#:ˆä�w‰w�}‰}˜TÔ"Ø<ˆCÜ×"Ñ"×9Ñ9¸#Ó>Ð>àˆr   c                ó”  — | j                   dk  ry	 | j                  | j                      }t        j
                  j                  |d«      }	 t	        j                  |«      d   }| j                  |«      | _	        t        j
                  j                  ||«      S # t        $ r | j                  }Y Œ†w xY w# t        t        f$ r Y yw xY w)zl
        Locate Visual C++ for VS2017+.

        Return
        ------
        str
            path
        ç      ,@r   r­   r�   )r‰   r‡   r´   rÅ   rR   rS   rT   r¯   r³   rŠ   rv   Ú
IndexError)r!   Úvs_dirÚguess_vcrŠ   s       r   rÇ   zSystemInfo._guess_vc  s¶   € ð �;‰;˜$ÒØð	'à×(Ñ(¨¯©Ñ5ˆFô
 —7‘7—<‘< Ð(8Ó9ˆð	ä—Z‘Z Ó)¨"Ñ-ˆFØ×0Ñ0°Ó8ˆDŒKÜ—7‘7—<‘< ¨&Ó1Ð1øô ò 	'à×&Ñ&ŠFð	'ûô œÐ$ò 	Ùð	ús$   ’B ÁAB5 ÂB2Â1B2Â5CÃCc                óô  — t         j                  j                  | j                  d| j                  z  «      }t         j                  j                  | j
                  j                  d| j                  z  «      }| j
                  j                  |d«      }|r t         j                  j                  |d«      n|}| j
                  j                  | j
                  j                  d| j                  z  «      xs |S )z{
        Locate Visual C++ for versions prior to 2017.

        Return
        ------
        str
            path
        z Microsoft Visual Studio %0.1f\VCrÂ   Ú
installdirÚVC)	rR   rS   rT   rÃ   r‰   r…   r_   r   rY   )r!   rÄ   Úreg_pathÚ	python_vcÚ
default_vcs        r   rÈ   zSystemInfo._guess_vc_legacy*  s­   € ô —'‘'—,‘,Ø× Ñ Ð"EÈÏÉÑ"Só
ˆô
 —7‘7—<‘< §¡× 5Ñ 5°wÀÇÁÑ7LÓMˆØ—G‘G—N‘N 8¨\Ó:ˆ	Ù6?”R—W‘W—\‘\ )¨TÔ2ÀWˆ
ð �w‰w�~‰~˜dŸg™gŸj™j¨'°D·K±KÑ*?Ó@ÒNÀJÐNr   c                ó¤   — | j                   dk  ry| j                   dk(  ry| j                   dk(  ry| j                   dk(  ry| j                   d	k\  ry
y)z—
        Microsoft Windows SDK versions for specified MSVC++ version.

        Return
        ------
        tuple of str
            versions
        ç      "@)z7.0z6.1z6.0aç      $@)z7.1z7.0aç      &@)z8.0z8.0aç      (@)ú8.1z8.1arÍ   )z10.0rÜ   r   ©r‰   r'   s    r   ÚWindowsSdkVersionzSystemInfo.WindowsSdkVersion?  sR   € ð �;‰;˜#ÒØ'Ø�[‰[˜DÒ Ø Ø�[‰[˜DÒ Ø Ø�[‰[˜DÒ Ø Ø�[‰[˜DÒ Ø Ør   c                ót   — | j                  t        j                  j                  | j                  d«      «      S )zt
        Microsoft Windows SDK last version.

        Return
        ------
        str
            version
        Úlib)Ú_use_last_dir_namerR   rS   rT   ÚWindowsSdkDirr'   s    r   ÚWindowsSdkLastVersionz SystemInfo.WindowsSdkLastVersionU  s*   € ð ×&Ñ&¤r§w¡w§|¡|°D×4FÑ4FÈÓ'NÓOÐOr   c                ó¦  — d}| j                   D ]Y  }t        j                  j                  | j                  j
                  d|z  «      }| j                  j                  |d«      }|sŒY n |rt        j                  j                  |«      st        j                  j                  | j                  j                  d| j                  z  «      }| j                  j                  |d«      }|r t        j                  j                  |d«      }|rt        j                  j                  |«      sv| j                   D ]g  }|d|j                  d«       }d	|z  }t        j                  j                  | j                  |«      }t        j                  j                  |«      sŒf|}Œi |rt        j                  j                  |«      sb| j                   D ]S  }d
|z  }t        j                  j                  | j                  |«      }t        j                  j                  |«      sŒR|}ŒU |s*t        j                  j                  | j                  d«      }|S )zn
        Microsoft Windows SDK directory.

        Return
        ------
        str
            path
        r   zv%sÚinstallationfolderrÂ   rÒ   ÚWinSDKNr½   zMicrosoft SDKs\Windows Kits\%szMicrosoft SDKs\Windows\v%sÚPlatformSDK)rÞ   rR   rS   rT   r…   rd   r   rÉ   r_   rŠ   Úrfindrƒ   rË   )r!   Úsdkdirr¨   ÚlocrS   Úinstall_baseÚintverÚds           r   râ   zSystemInfo.WindowsSdkDira  s¼  € ð  ˆØ×)Ñ)ò 	ˆCä—'‘'—,‘,˜tŸw™w×2Ñ2°E¸C±KÓ@ˆCØ—W‘W—^‘^ CÐ)=Ó>ˆFÚÙð	ñ œRŸW™WŸ]™]¨6Ô2ä—7‘7—<‘< §¡× 5Ñ 5°wÀÇÁÑ7LÓMˆDØŸ7™7Ÿ>™>¨$°Ó=ˆLÙÜŸ™Ÿ™ l°HÓ=�ÙœRŸW™WŸ]™]¨6Ô2à×-Ñ-ò �ØÐ-˜sŸy™y¨›~Ð.�Ø8¸6ÑA�Ü—G‘G—L‘L ×!2Ñ!2°DÓ9�Ü—7‘7—=‘= Õ#Ø‘Fðñ œRŸW™WŸ]™]¨6Ô2à×-Ñ-ò �Ø4°sÑ:�Ü—G‘G—L‘L ×!2Ñ!2°DÓ9�Ü—7‘7—=‘= Õ#Ø‘Fð	ñ
 ä—W‘W—\‘\ $×"3Ñ"3°]ÓCˆFØˆr   c                ó`  — | j                   dk  rd}d}n2d}| j                   dk  rdnd}| j                  j                  d|¬«      }d	||j                  d
d«      fz  }g }| j                   dk\  rJ| j                  D ];  }|t
        j                  j                  | j                  j                  ||«      gz  }Œ= | j                  D ]>  }|t
        j                  j                  | j                  j                  d|z  |«      gz  }Œ@ |D ]$  }| j                  j                  |d«      }|sŒ"|c S  y)zy
        Microsoft Windows SDK executable directory.

        Return
        ------
        str
            path
        rÚ   é#   r   é(   rÛ   TF)r   r5   zWinSDK-NetFx%dTools%sr:   ú-rÍ   zv%sArå   N)r‰   rK   r6   r   ÚNetFxSdkVersionrR   rS   rT   r…   rg   rÞ   rd   r   )	r!   Únetfxverr    r5   ÚfxÚregpathsr¨   rS   Úexecpaths	            r   ÚWindowsSDKExecutablePathz#SystemInfo.WindowsSDKExecutablePathŒ  s.  € ð �;‰;˜$ÒØˆHØ‰DàˆHØ"Ÿk™k¨TÒ1‘d°uˆGØ—7‘7×&Ñ&¨4¸Ð&ÓAˆDØ$¨°$·,±,¸tÀSÓ2IÐ'JÑJˆð ˆØ�;‰;˜$ÒØ×+Ñ+ò G�ØœRŸW™WŸ\™\¨$¯'©'×*;Ñ*;¸SÀ"ÓEÐFÑF‘ðGð ×)Ñ)ò 	NˆCØœŸ™Ÿ™ d§g¡g×&9Ñ&9¸6ÀC¹<ÈÓLÐMÑM‰Hð	Nð ò 	 ˆDØ—w‘w—~‘~ dÐ,@ÓAˆHÚØ’ð	 ð
 r   c                óÄ   — t         j                  j                  | j                  j                  d| j
                  z  «      }| j                  j                  |d«      xs dS )zl
        Microsoft Visual F# directory.

        Return
        ------
        str
            path
        z%0.1f\Setup\F#Ú
productdirr   )rR   rS   rT   r…   rO   r‰   r   )r!   rS   s     r   ÚFSharpInstallDirzSystemInfo.FSharpInstallDir±  sF   € ô �w‰w�|‰|˜DŸG™G×0Ñ0Ð2CÀdÇkÁkÑ2QÓRˆØ�w‰w�~‰~˜d LÓ1Ò7°RÐ7r   c                ó²   — | j                   dk\  rdnd}|D ]?  }| j                  j                  | j                  j                  d|z  «      }|sŒ9|xs dc S  y)zt
        Microsoft Universal CRT SDK directory.

        Return
        ------
        str
            path
        rÍ   )Ú10Ú81r   z
kitsroot%sr   N)r‰   r…   r   ri   )r!   Úversr¨   ré   s       r   ÚUniversalCRTSdkDirzSystemInfo.UniversalCRTSdkDir¾  s\   € ð  $Ÿ{™{¨dÒ2‰|¸ˆð ò 	$ˆCØ—W‘W—^‘^ D§G¡G×$>Ñ$>ÀÈsÑ@RÓSˆFÚØ’| Ò#ð	$ð
 r   c                ót   — | j                  t        j                  j                  | j                  d«      «      S )z€
        Microsoft Universal C Runtime SDK last version.

        Return
        ------
        str
            version
        rà   )rá   rR   rS   rT   rÿ   r'   s    r   ÚUniversalCRTSdkLastVersionz%SystemInfo.UniversalCRTSdkLastVersionÓ  s*   € ð ×&Ñ&¤r§w¡w§|¡|°D×4KÑ4KÈUÓ'SÓTÐTr   c                ó(   — | j                   dk\  rdS dS )z�
        Microsoft .NET Framework SDK versions.

        Return
        ------
        tuple of str
            versions
        rÍ   )	z4.7.2z4.7.1z4.7z4.6.2z4.6.1z4.6z4.5.2z4.5.1z4.5r   rÝ   r'   s    r   rò   zSystemInfo.NetFxSdkVersionß  s%   € ð �{‰{˜dÒ"ð Xð	
ð ð	
r   c                óÖ   — d}| j                   D ]W  }t        j                  j                  | j                  j
                  |«      }| j                  j                  |d«      }|sŒV |S  |S )zu
        Microsoft .NET Framework SDK directory.

        Return
        ------
        str
            path
        r   Úkitsinstallationfolder)rò   rR   rS   rT   r…   rg   r   )r!   ré   r¨   rê   s       r   ÚNetFxSdkDirzSystemInfo.NetFxSdkDirð  sc   € ð ˆØ×'Ñ'ò 	ˆCÜ—'‘'—,‘,˜tŸw™w×0Ñ0°#Ó6ˆCØ—W‘W—^‘^ CÐ)AÓBˆFÚØØˆð	ð
 ˆr   c                ó¾   — t         j                  j                  | j                  d«      }| j                  j                  | j                  j                  d«      xs |S )zw
        Microsoft .NET Framework 32bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\FrameworkÚframeworkdir32©rR   rS   rT   r‚   r…   r   rY   ©r!   Úguess_fws     r   ÚFrameworkDir32zSystemInfo.FrameworkDir32  sB   € ô —7‘7—<‘< §¡Ð-GÓHˆð �w‰w�~‰~˜dŸg™gŸj™jÐ*:Ó;ÒG¸xÐGr   c                ó¾   — t         j                  j                  | j                  d«      }| j                  j                  | j                  j                  d«      xs |S )zw
        Microsoft .NET Framework 64bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\Framework64Úframeworkdir64r  r	  s     r   ÚFrameworkDir64zSystemInfo.FrameworkDir64  sB   € ô —7‘7—<‘< §¡Ð-IÓJˆð �w‰w�~‰~˜dŸg™gŸj™jÐ*:Ó;ÒG¸xÐGr   c                ó$   — | j                  d«      S )zƒ
        Microsoft .NET Framework 32bit versions.

        Return
        ------
        tuple of str
            versions
        é    ©Ú_find_dot_net_versionsr'   s    r   ÚFrameworkVersion32zSystemInfo.FrameworkVersion32"  ó   € ð ×*Ñ*¨2Ó.Ð.r   c                ó$   — | j                  d«      S )zƒ
        Microsoft .NET Framework 64bit versions.

        Return
        ------
        tuple of str
            versions
        é@   r  r'   s    r   ÚFrameworkVersion64zSystemInfo.FrameworkVersion64.  r  r   c                ó|  — | j                   j                  | j                   j                  d|z  «      }t        | d|z  «      }|xs | j	                  |d«      xs d}| j
                  dk\  r|dfS | j
                  dk\  r|j                  «       dd	 d
k7  rddfS |dfS | j
                  dk(  ry| j
                  dk(  ryy)zê
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.

        Return
        ------
        tuple of str
            versions
        zframeworkver%dzFrameworkDir%dÚvr   rÛ   zv4.0rÙ   Nr¾   Úv4z
v4.0.30319úv3.5rØ   )r  ú
v2.0.50727g       @)zv3.0r  r   )r…   r   rY   Úgetattrrá   r‰   r   )r!   ÚbitsÚreg_verÚdot_net_dirr¨   s        r   r  z!SystemInfo._find_dot_net_versions:  sÁ   € ð —'‘'—.‘. §¡§¡Ð-=ÀÑ-DÓEˆÜ˜dÐ$4°tÑ$;Ó<ˆØÒH˜×0Ñ0°¸cÓBÒHÀbˆð �;‰;˜$ÒØ˜�;ÐØ�[‰[˜DÒ Ø#&§9¡9£;¨r° ?°dÒ#:�<ÀVÐKÐKÀÀVÐKÐKØ�[‰[˜CÒØ'Ø�[‰[˜CÒØ'Ør   c                óv   ‡ ‡— ˆ ˆfd„t        t        j                  ‰ «      «      D «       }t        |d«      xs dS )a)  
        Return name of the last dir in path or '' if no dir found.

        Parameters
        ----------
        path: str
            Use dirs in this path
        prefix: str
            Use only dirs starting by this prefix

        Return
        ------
        str
            name
        c              3  ó¾   •K  — | ]T  }t         j                  j                  t         j                  j                  ‰|«      «      r|j	                  ‰«      r|–— ŒV y ­wrJ   )rR   rS   rÉ   rT   Ú
startswith)Ú.0Údir_namerS   Úprefixs     €€r   ú	<genexpr>z0SystemInfo._use_last_dir_name.<locals>.<genexpr>i  sF   øè ø€ ò 
àÜ�w‰w�}‰}œRŸW™WŸ\™\¨$°Ó9Ô:Ø×#Ñ# FÔ+ô ñ
ùs   ƒAANr   )ÚreversedrR   r¯   Únext)rS   r&  Úmatching_dirss   `` r   rá   zSystemInfo._use_last_dir_nameX  s4   ù€ ô"
ä$¤R§Z¡Z°Ó%5Ó6ô
ˆô �M 4Ó(Ò.¨BÐ.r   rJ   r>   )r?   zdict[float, str])r?   ztuple[LiteralString, ...]©r?   z
str | None)r?   ztuple[str, ...])r   )#r   r   r   rD   r
   rE   r‚   rƒ   rÃ   r"   rˆ   rŽ   r†   Ústaticmethodr³   rF   rÅ   rË   rÇ   rÈ   rÞ   rã   râ   r÷   rú   rÿ   r  rò   r  r  r  r  r  r  rá   r   r   r   r�   r�   _  sÆ  „ ñ	ð ˆW�[‰[˜ 2Ó&€FØ�7—;‘;˜~¨rÓ2€LØ!�g—k‘kÐ"5°|ÓD€OôSò#ò(ó>(ðT ñ7ó ð7ð  ñLó ðLð" ñó ðò"ò<Oð* òó ðð* ñ	Pó ð	Pð ò(ó ð(ðT ñ"ó ð"ðH ñ
8ó ð
8ð ñó ðð( ñ	Uó ð	Uð ñ
ó ð
ð  ñó ðð" ñHó ðHð ñHó ðHð ò	/ó ð	/ð ò	/ó ð	/óð< ò/ó ñ/r   r�   c                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded<   y)	Ú_EnvironmentDictrB   Úincluderà   ÚlibpathrS   zNotRequired[str | None]Úpy_vcruntime_redistN)r   r   r   Ú__annotations__r   r   r   r.  r.  r  s   … ØƒLØ	ƒHØƒLØ
ƒIØ0Ô0r   r.  c                  ó²  — e Zd ZdZdd d„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed!d„«       Zd"d#d„Zd„ Z y)$ÚEnvironmentInfoaY  
    Return environment variables for specified Microsoft Visual C++ version
    and platform : Lib, Include, Path and libpath.

    This function is compatible with Microsoft Visual C++ 9.0 to 14.X.

    Script created by analysing Microsoft environment configuration files like
    "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ...

    Parameters
    ----------
    arch: str
        Target architecture.
    vc_ver: float
        Required Microsoft Visual C++ version. If not set, autodetect the last
        version.
    vc_min_ver: float
        Minimum Microsoft Visual C++ version.
    Nc                óî   — t        |«      | _        t        | j                  «      | _        t	        | j                  |«      | _        | j                  |k  r!d}t        j                  j                  |«      ‚y )Nz.No suitable Microsoft Visual C++ version found)
r   rK   rH   r…   r�   ÚsirŠ   r�   r�   r‘   )r!   r    rŠ   Ú
vc_min_verÚerrs        r   r"   zEnvironmentInfo.__init__’  s]   € Ü˜tÓ$ˆŒÜ˜tŸw™wÓ'ˆŒÜ˜TŸW™W fÓ-ˆŒà�;‰;˜Ò#ØBˆCÜ×"Ñ"×9Ñ9¸#Ó>Ð>ð $r   c                ó.   — | j                   j                  S )zk
        Microsoft Visual Studio.

        Return
        ------
        float
            version
        )r6  r‰   r'   s    r   r‰   zEnvironmentInfo.vs_ver›  ó   € ð �w‰w�~‰~Ðr   c                ó.   — | j                   j                  S )zp
        Microsoft Visual C++ version.

        Return
        ------
        float
            version
        )r6  rŠ   r'   s    r   rŠ   zEnvironmentInfo.vc_ver§  r:  r   c                ó  — ddg}| j                   dk\  r2| j                  j                  dd¬«      }|dgz  }|dgz  }|d|z  gz  }|D �cg c]6  }t        j                  j                  | j                  j                  |«      ‘Œ8 c}S c c}w )	zu
        Microsoft Visual Studio Tools.

        Return
        ------
        list of str
            paths
        zCommon7\IDEzCommon7\ToolsrÍ   T©r5   r   z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance ToolszTeam Tools\Performance Tools%s)r‰   rK   r6   rR   rS   rT   r6  rÅ   )r!   ÚpathsÚarch_subdirrS   s       r   ÚVSToolszEnvironmentInfo.VSTools³  s�   € ð  Ð!1Ð2ˆà�;‰;˜$ÒØŸ'™'×-Ñ-°dÀÐ-ÓEˆKØÐJÐKÑKˆEØÐ5Ð6Ñ6ˆEØÐ7¸+ÑEÐFÑFˆEàEJÖK¸T”—‘—‘˜TŸW™W×1Ñ1°4Õ8ÒKÐKùÒKs   Á
;Bc                óÒ   — t         j                  j                  | j                  j                  d«      t         j                  j                  | j                  j                  d«      gS )z’
        Microsoft Visual C++ & Microsoft Foundation Class Includes.

        Return
        ------
        list of str
            paths
        ÚIncludezATLMFC\Include)rR   rS   rT   r6  rË   r'   s    r   Ú
VCIncludeszEnvironmentInfo.VCIncludesÇ  sG   € ô �G‰G�L‰L˜Ÿ™×-Ñ-¨yÓ9Ü�G‰G�L‰L˜Ÿ™×-Ñ-Ð/@ÓAð
ð 	
r   c                ód  — | j                   dk\  r| j                  j                  d¬«      }n| j                  j                  d¬«      }d|z  d|z  g}| j                   dk\  r	|d|z  gz  }|D �cg c]6  }t        j                  j                  | j                  j                  |«      ‘Œ8 c}S c c}w )	z“
        Microsoft Visual C++ & Microsoft Foundation Class Libraries.

        Return
        ------
        list of str
            paths
        ç      .@T©r   ©r5   úLib%szATLMFC\Lib%srÍ   zLib\store%s)r‰   rK   r8   rR   rS   rT   r6  rË   )r!   r?  r>  rS   s       r   ÚVCLibrarieszEnvironmentInfo.VCLibrariesÖ  s�   € ð �;‰;˜$ÒØŸ'™'×,Ñ,°Ð,Ó6‰KàŸ'™'×,Ñ,°TÐ,Ó:ˆKØ˜;Ñ&¨¸+Ñ(EÐFˆà�;‰;˜$ÒØ�n {Ñ2Ð3Ñ3ˆEàEJÖK¸T”—‘—‘˜TŸW™W×1Ñ1°4Õ8ÒKÐKùÒKs   Á/;B-c                óŽ   — | j                   dk  rg S t        j                  j                  | j                  j
                  d«      gS )z‡
        Microsoft Visual C++ store references Libraries.

        Return
        ------
        list of str
            paths
        rÍ   zLib\store\references)r‰   rR   rS   rT   r6  rË   r'   s    r   ÚVCStoreRefszEnvironmentInfo.VCStoreRefsë  s8   € ð �;‰;˜ÒØˆIÜ—‘—‘˜TŸW™W×1Ñ1Ð3JÓKÐLÐLr   c                ó2  — | j                   }t        j                  j                  |j                  d«      g}| j
                  dk  rdnd}| j                  j                  |«      }|r1|t        j                  j                  |j                  d|z  «      gz  }| j
                  dk(  rOd| j                  j                  d¬«      z  }|t        j                  j                  |j                  |«      gz  }|S | j
                  dk\  rã| j                  j                  «       rd	nd
}|t        j                  j                  |j                  || j                  j                  d¬«      z  «      gz  }| j                  j                  | j                  j                  k7  rK|t        j                  j                  |j                  || j                  j                  d¬«      z  «      gz  }|S |t        j                  j                  |j                  d«      gz  }|S )zr
        Microsoft Visual C++ Tools.

        Return
        ------
        list of str
            paths
        Ú
VCPackagesrÙ   TFúBin%srÍ   rG  rE  zbin\HostX86%szbin\HostX64%srF  ÚBin)r6  rR   rS   rT   rË   r‰   rK   r=   r6   r0   r8   r/   r(   )r!   r6  Útoolsr;   r?  rS   Úhost_dirs          r   ÚVCToolszEnvironmentInfo.VCToolsù  s¸  € ð �W‰WˆÜ—‘—‘˜bŸo™o¨|Ó<Ð=ˆàŸ;™;¨$Ò.‘4°EˆØ—g‘g×'Ñ'¨Ó1ˆÙØ”b—g‘g—l‘l 2§?¡?°G¸kÑ4IÓJÐKÑKˆEà�;‰;˜$ÒØ˜TŸW™W×0Ñ0¸Ð0Ó>Ñ>ˆDØ”b—g‘g—l‘l 2§?¡?°DÓ9Ð:Ñ:ˆEð( ˆð% �[‰[˜DÒ à$(§G¡G×$:Ñ$:Ô$<Ñ ÐBRð ð Ü—‘—‘˜RŸ_™_¨h¸¿¹×9KÑ9KÐPTÐ9KÓ9UÑ.UÓVðñ ˆEð �w‰w×"Ñ" d§g¡g×&8Ñ&8Ò8ØÜ—G‘G—L‘LØŸ™¨°D·G±G×4GÑ4GÈDÐ4GÓ4QÑ)Qóðñ �ð ˆð ”b—g‘g—l‘l 2§?¡?°EÓ:Ð;Ñ;ˆEàˆr   c                óÎ  — | j                   dk  rU| j                  j                  dd¬«      }t        j                  j                  | j                  j                  d|z  «      gS | j                  j                  d¬«      }t        j                  j                  | j                  j                  d«      }| j                  }t        j                  j                  ||›d|›�«      gS )zw
        Microsoft Windows SDK Libraries.

        Return
        ------
        list of str
            paths
        rÙ   Tr=  rH  rF  rà   Úum)	r‰   rK   r8   rR   rS   rT   r6  râ   Ú_sdk_subdir)r!   r?  rà   Úlibvers       r   ÚOSLibrarieszEnvironmentInfo.OSLibraries#  s¯   € ð �;‰;˜$ÒØŸ'™'×,Ñ,°T¸tÐ,ÓDˆKÜ—G‘G—L‘L §¡×!6Ñ!6¸À+Ñ8MÓNÐOÐOð Ÿ'™'×,Ñ,°Ð,Ó6ˆKÜ—'‘'—,‘,˜tŸw™w×4Ñ4°eÓ<ˆCØ×%Ñ%ˆFÜ—G‘G—L‘L ²&¹+Ð&FÓGÐHÐHr   c                óØ  — t         j                  j                  | j                  j                  d«      }| j
                  dk  r"|t         j                  j                  |d«      gS | j
                  dk\  r| j                  }nd}t         j                  j                  |d|z  «      t         j                  j                  |d|z  «      t         j                  j                  |d|z  «      gS )	zu
        Microsoft Windows SDK Include.

        Return
        ------
        list of str
            paths
        r/  rÙ   ÚglrÍ   r   z%ssharedz%sumz%swinrt)rR   rS   rT   r6  râ   r‰   rU  )r!   r/  Úsdkvers      r   Ú
OSIncludeszEnvironmentInfo.OSIncludes7  s´   € ô —'‘'—,‘,˜tŸw™w×4Ñ4°iÓ@ˆà�;‰;˜$ÒØœRŸW™WŸ\™\¨'°4Ó8Ð9Ð9ð �{‰{˜dÒ"Ø×)Ñ)‘à�ä—‘—‘˜W j°6Ñ&9Ó:Ü—‘—‘˜W f¨v¡oÓ6Ü—‘—‘˜W i°&Ñ&8Ó9ðð r   c                óî  — t         j                  j                  | j                  j                  d«      }g }| j
                  dk  r|| j                  z  }| j
                  dk\  r$|t         j                  j                  |d«      gz  }| j
                  dk\  rÞ||t         j                  j                  | j                  j                  d«      t         j                  j                  |dd«      t         j                  j                  |d	d«      t         j                  j                  |d
d«      t         j                  j                  | j                  j                  ddd| j
                  z  ddd«      gz  }|S )z}
        Microsoft Windows SDK Libraries Paths.

        Return
        ------
        list of str
            paths
        Ú
ReferencesrØ   rÚ   zCommonConfiguration\NeutralrÍ   ÚUnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContractÚExtensionSDKszMicrosoft.VCLibsrÂ   ÚCommonConfigurationÚneutral)rR   rS   rT   r6  râ   r‰   rW  )r!   Úrefr0  s      r   Ú	OSLibpathzEnvironmentInfo.OSLibpathQ  s)  € ô �g‰g�l‰l˜4Ÿ7™7×0Ñ0°,Ó?ˆØˆà�;‰;˜#ÒØ�t×'Ñ'Ñ'ˆGà�;‰;˜$ÒØœŸ™Ÿ™ SÐ*HÓIÐJÑJˆGà�;‰;˜$ÒØØÜ—‘—‘˜TŸW™W×2Ñ2°OÓDÜ—‘—‘˜SÐ"KÈYÓWÜ—‘—‘˜SÐ"IÈ9ÓUÜ—‘—‘ØÐGÈóô —‘—‘Ø—G‘G×)Ñ)Ø#Ø&Ø˜dŸk™kÑ)Ø Ø)Øóðñ ˆGð$ ˆr   c                ó4   — t        | j                  «       «      S )zs
        Microsoft Windows SDK Tools.

        Return
        ------
        list of str
            paths
        )ÚlistÚ
_sdk_toolsr'   s    r   ÚSdkToolszEnvironmentInfo.SdkToolsy  s   € ô �D—O‘OÓ%Ó&Ð&r   c              #  ó:  K  — | j                   dk  rI| j                   dk  rdnd}t        j                  j                  | j                  j
                  |«      –— | j                  j                  «       sW| j                  j                  d¬«      }d|z  }t        j                  j                  | j                  j
                  |«      –— | j                   dv rv| j                  j                  «       rd	}n| j                  j                  dd¬
«      }d|z  }t        j                  j                  | j                  j
                  |«      –— n›| j                   dk\  rŒt        j                  j                  | j                  j
                  d«      }| j                  j                  d¬«      }| j                  j                  }t        j                  j                  ||›|›�«      –— | j                  j                  r| j                  j                  –— yy­w)zˆ
        Microsoft Windows SDK Tools paths generator.

        Return
        ------
        generator of str
            paths
        rE  rÚ   rO  zBin\x86TrF  rN  )rÙ   rÚ   r   r=  zBin\NETFX 4.0 Tools%sN)r‰   rR   rS   rT   r6  râ   rK   r0   r6   r,   rã   r÷   )r!   Úbin_dirr?  rS   rZ  s        r   rf  zEnvironmentInfo._sdk_tools…  s„  è ø€ ð �;‰;˜ÒØ#Ÿ{™{¨dÒ2‘e¸
ˆGÜ—'‘'—,‘,˜tŸw™w×4Ñ4°gÓ>Ò>à�w‰w×%Ñ%Ô'ØŸ'™'×-Ñ-°$Ð-Ó7ˆKØ˜[Ñ(ˆDÜ—'‘'—,‘,˜tŸw™w×4Ñ4°dÓ;Ò;à�;‰;˜,Ñ&Ø�w‰w×$Ñ$Ô&Ø ‘à"Ÿg™g×1Ñ1¸$ÀDÐ1ÓI�Ø+¨kÑ9ˆDÜ—'‘'—,‘,˜tŸw™w×4Ñ4°dÓ;Ó;à�[‰[˜DÒ Ü—7‘7—<‘< §¡× 5Ñ 5°uÓ=ˆDØŸ'™'×-Ñ-°$Ð-Ó7ˆKØ—W‘W×2Ñ2ˆFÜ—'‘'—,‘,˜t©v±{Ð%CÓDÒDà�7‰7×+Ò+Ø—'‘'×2Ñ2Ó2ð ,ùs   ‚HHc                ó@   — | j                   j                  }|rd|z  S dS )zu
        Microsoft Windows SDK version subdir.

        Return
        ------
        str
            subdir
        ú%s\r   )r6  rã   ©r!   Úucrtvers     r   rU  zEnvironmentInfo._sdk_subdir¨  s%   € ð —'‘'×/Ñ/ˆÙ%,�˜Ñ Ð4°"Ð4r   c                óŽ   — | j                   dkD  rg S t        j                  j                  | j                  j
                  d«      gS )zs
        Microsoft Windows SDK Setup.

        Return
        ------
        list of str
            paths
        rØ   ÚSetup)r‰   rR   rS   rT   r6  râ   r'   s    r   ÚSdkSetupzEnvironmentInfo.SdkSetupµ  s7   € ð �;‰;˜ÒØˆIä—‘—‘˜TŸW™W×2Ñ2°GÓ<Ð=Ð=r   c                óZ  — | j                   }| j                  }| j                  dk  r'd}|j                  «        xr |j	                  «        }nB|j                  «       xs |j	                  «       }|j
                  dk(  xs |j                  dk(  }g }|rE||j                  D �cg c],  }t        j                  j                  |j                  |«      ‘Œ. c}z  }|rE||j                  D �cg c],  }t        j                  j                  |j                  |«      ‘Œ. c}z  }|S c c}w c c}w )zv
        Microsoft .NET Framework Tools.

        Return
        ------
        list of str
            paths
        rÙ   Tr   )rK   r6  r‰   r,   r0   r/   r(   r  rR   rS   rT   r  r  r  )r!   rK   r6  Ú	include32Ú	include64rP  r¨   s          r   ÚFxToolszEnvironmentInfo.FxToolsÄ  s  € ð �W‰WˆØ�W‰Wˆà�;‰;˜$ÒØˆIØ×,Ñ,Ó.Ð.ÒJ°r×7HÑ7HÓ7JÐ3J‰Ià×(Ñ(Ó*ÒA¨b×.?Ñ.?Ó.AˆIØŸ™¨'Ñ1ÒM°R·]±]ÀgÑ5MˆIàˆÙØØ@B×@UÑ@UöØ9<”—‘—‘˜R×.Ñ.°Õ4òñ ˆEñ ØØ@B×@UÑ@UöØ9<”—‘—‘˜R×.Ñ.°Õ4òñ ˆEð ˆùòùòs   Â$1D#Ã+1D(c                óø   — | j                   dk  s| j                  j                  sg S | j                  j	                  d¬«      }t
        j                  j                  | j                  j                  d|z  «      gS )z~
        Microsoft .Net Framework SDK Libraries.

        Return
        ------
        list of str
            paths
        rÍ   TrF  zlib\um%s)r‰   r6  r  rK   r8   rR   rS   rT   )r!   r?  s     r   ÚNetFxSDKLibrariesz!EnvironmentInfo.NetFxSDKLibrariesã  s_   € ð �;‰;˜Ò T§W¡W×%8Ò%8ØˆIà—g‘g×(Ñ(¨TÐ(Ó2ˆÜ—‘—‘˜TŸW™W×0Ñ0°+ÀÑ2KÓLÐMÐMr   c                óº   — | j                   dk  s| j                  j                  sg S t        j                  j                  | j                  j                  d«      gS )z}
        Microsoft .Net Framework SDK Includes.

        Return
        ------
        list of str
            paths
        rÍ   z
include\um)r‰   r6  r  rR   rS   rT   r'   s    r   ÚNetFxSDKIncludesz EnvironmentInfo.NetFxSDKIncludesó  sC   € ð �;‰;˜Ò T§W¡W×%8Ò%8ØˆIä—‘—‘˜TŸW™W×0Ñ0°-Ó@ÐAÐAr   c                ól   — t         j                  j                  | j                  j                  d«      gS )z„
        Microsoft Visual Studio Team System Database.

        Return
        ------
        list of str
            paths
        zVSTSDB\Deploy)rR   rS   rT   r6  rÅ   r'   s    r   ÚVsTDbzEnvironmentInfo.VsTDb  s'   € ô —‘—‘˜TŸW™W×1Ñ1Ð3CÓDÐEÐEr   c                ó¨  — | j                   dk  rg S | j                   dk  r3| j                  j                  }| j                  j	                  d¬«      }n| j                  j
                  }d}d| j                   |fz  }t        j                  j                  ||«      g}| j                   dk\  r%|t        j                  j                  ||d«      gz  }|S )zn
        Microsoft Build Engine.

        Return
        ------
        list of str
            paths
        rÛ   rE  TrG  r   zMSBuild\%0.1f\bin%sÚRoslyn)	r‰   r6  rÃ   rK   r6   rÅ   rR   rS   rT   )r!   Ú	base_pathr?  rS   Úbuilds        r   ÚMSBuildzEnvironmentInfo.MSBuild  s´   € ð �;‰;˜ÒØˆIØ�[‰[˜4ÒØŸ™×/Ñ/ˆIØŸ'™'×-Ñ-°dÐ-Ó;‰KàŸ™×,Ñ,ˆIØˆKà%¨¯©°kÐ(BÑBˆÜ—‘—‘˜i¨Ó.Ð/ˆà�;‰;˜$Òà”b—g‘g—l‘l 9¨d°HÓ=Ð>Ñ>ˆEàˆr   c                óŽ   — | j                   dk  rg S t        j                  j                  | j                  j
                  d«      gS )zt
        Microsoft HTML Help Workshop.

        Return
        ------
        list of str
            paths
        rÚ   zHTML Help Workshop)r‰   rR   rS   rT   r6  rÃ   r'   s    r   ÚHTMLHelpWorkshopz EnvironmentInfo.HTMLHelpWorkshop*  s8   € ð �;‰;˜ÒØˆIä—‘—‘˜TŸW™W×4Ñ4Ð6JÓKÐLÐLr   c                ó(  — | j                   dk  rg S | j                  j                  d¬«      }t        j                  j                  | j                  j                  d«      }| j                  }t        j                  j                  ||›d|›�«      gS )zƒ
        Microsoft Universal C Runtime SDK Libraries.

        Return
        ------
        list of str
            paths
        rÍ   TrF  rà   Úucrt)	r‰   rK   r8   rR   rS   rT   r6  rÿ   Ú_ucrt_subdir)r!   r?  rà   rm  s       r   ÚUCRTLibrarieszEnvironmentInfo.UCRTLibraries9  sr   € ð �;‰;˜ÒØˆIà—g‘g×(Ñ(¨TÐ(Ó2ˆÜ�g‰g�l‰l˜4Ÿ7™7×5Ñ5°uÓ=ˆØ×#Ñ#ˆÜ—‘—‘˜S²¹Ð"EÓFÐGÐGr   c                óè   — | j                   dk  rg S t        j                  j                  | j                  j
                  d«      }t        j                  j                  |d| j                  z  «      gS )z�
        Microsoft Universal C Runtime SDK Include.

        Return
        ------
        list of str
            paths
        rÍ   r/  z%sucrt)r‰   rR   rS   rT   r6  rÿ   r„  )r!   r/  s     r   ÚUCRTIncludeszEnvironmentInfo.UCRTIncludesK  sV   € ð �;‰;˜ÒØˆIä—'‘'—,‘,˜tŸw™w×9Ñ9¸9ÓEˆÜ—‘—‘˜W h°×1BÑ1BÑ&BÓCÐDÐDr   c                ó@   — | j                   j                  }|rd|z  S dS )z�
        Microsoft Universal C Runtime SDK version subdir.

        Return
        ------
        str
            subdir
        rk  r   )r6  r  rl  s     r   r„  zEnvironmentInfo._ucrt_subdir[  s%   € ð —'‘'×4Ñ4ˆÙ%,�˜Ñ Ð4°"Ð4r   c                ó`   — d| j                   cxkD  rdkD  rg S  | j                  j                  gS )zk
        Microsoft Visual F#.

        Return
        ------
        list of str
            paths
        rÚ   rÛ   )r‰   r6  rú   r'   s    r   ÚFSharpzEnvironmentInfo.FSharph  s4   € ð �$—+‘+Ô$ Ò$ØˆIð %ð —‘×(Ñ(Ð)Ð)r   c                ó:  ‡‡— d| j                   z  Š| j                  j                  d¬«      j                  d«      Šg }| j                  j
                  }t        j                  j                  |j                  dd«      «      }t        j                  j                  |«      r[t        j                  j                  |t        j                  |«      d   «      }||t        j                  j                  |d«      gz  }|t        j                  j                  |d	«      gz  }d
| j                   dz  z  d
t        | j                  «      dz  z  f}ˆˆfd„t        j                   ||«      D «       }t#        t%        t        j                  j&                  |«      d«      S )z{
        Microsoft Visual C++ runtime redistributable dll.

        Returns the first suitable path found or None.
        zvcruntime%d0.dllTrF  r:   z\Toolsz\Redistr�   ÚonecoreÚredistzMicrosoft.VC%d.CRTé
   c              3  óh   •K  — | ])  \  }}t         j                  j                  |‰|‰«      –— Œ+ y ­wrJ   )rR   rS   rT   )r$  r&  Úcrt_dirr?  Ú	vcruntimes      €€r   r'  z2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>”  s0   øè ø€ ò 
á!�˜ô �G‰G�L‰L˜ ¨g°y×Añ
ùs   ƒ/2N)rŠ   rK   r8   Ústripr6  rË   rR   rS   Údirnamer   rÉ   rT   r¯   Úintr‰   r˜   r™   r)  ÚfilterÚisfile)r!   ÚprefixesÚ
tools_pathÚredist_pathÚcrt_dirsÚcandidate_pathsr?  r‘  s         @@r   ÚVCRuntimeRedistzEnvironmentInfo.VCRuntimeRedistw  s@  ù€ ð '¨¯©Ñ4ˆ	Ø—g‘g×(Ñ(¨TÐ(Ó2×8Ñ8¸Ó>ˆð ˆØ—W‘W×)Ñ)ˆ
Ü—g‘g—o‘o j×&8Ñ&8¸ÀJÓ&OÓPˆÜ�7‰7�=‰=˜Ô%äŸ'™'Ÿ,™, {´B·J±J¸{Ó4KÈBÑ4OÓPˆKØ˜¤b§g¡g§l¡l°;À	Ó&JÐKÑKˆHà”R—W‘W—\‘\ *¨hÓ7Ð8Ñ8ˆð ! D§K¡K°"Ñ$4Ñ5à ¤C¨¯©Ó$4°rÑ$9Ñ:ð
ˆô
ä%.×%6Ñ%6°xÀÓ%Jô
ˆô ”Fœ2Ÿ7™7Ÿ>™>¨?Ó;¸TÓBÐBr   c                óä  — t        | j                  d| j                  | j                  | j                  | j
                  g|«      | j                  d| j                  | j                  | j                  | j                  | j                  g|«      | j                  d| j                  | j                  | j                  | j                  g|«      | j                  d| j                  | j                  | j                  | j                   | j"                  | j                  | j$                  | j&                  | j(                  g	|«      ¬«      }| j*                  dk\  r| j,                  r| j,                  |d<   |S )zÛ
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.

        Return
        ------
        dict
            environment
        r/  rà   r0  rS   )r/  rà   r0  rS   é   r1  )r.  Ú_build_pathsrC  r[  r‡  rx  rI  rW  rt  r…  rv  rK  rc  rR  r@  rz  rg  rp  r  r�  rŠ  r‰   rœ  )r!   ÚexistsÚenvs      r   Ú
return_envzEnvironmentInfo.return_envš  sR  € ô Ø×%Ñ%Øà—O‘OØ—O‘OØ×%Ñ%Ø×)Ñ)ð	ð ó	ð ×!Ñ!Øà×$Ñ$Ø×$Ñ$Ø—L‘LØ×&Ñ&Ø×*Ñ*ðð ó
ð ×%Ñ%ØØ×!Ñ! 4§<¡<°×1AÑ1AÀ4Ç>Á>ÐRØóð
 ×"Ñ"Øà—L‘LØ—L‘LØ—J‘JØ—M‘MØ—M‘MØ—L‘LØ—L‘LØ×)Ñ)Ø—K‘Kð
ð óô7*
ˆðV �;‰;˜"Ò ×!5Ò!5Ø)-×)=Ñ)=ˆCÐ%Ñ&Øˆ
r   c                óð  — t         j                  j                  |«      }t        j                  |d«      j                  t        j                  «      }t        j                  ||«      }|r-t        t        t        j                  j                  |«      «      n|}|s2d|j                  «       z  }t        j                  j                  |«      ‚t!        |«      }	t        j                  j#                  |	«      S )aC  
        Given an environment variable name and specified paths,
        return a pathsep-separated string of paths containing
        unique, extant, directories from those paths and from
        the environment variable. Raise an error if no paths
        are resolved.

        Parameters
        ----------
        name: str
            Environment variable name
        spec_path_lists: list of str
            Paths
        exists: bool
            It True, only return existing paths.

        Return
        ------
        str
            Pathsep-separated paths
        r   z %s environment variable is empty)r˜   ÚchainÚfrom_iterabler
   rE   r¿   rR   Úpathsepre  r•  rS   rÉ   Úupperr�   r�   r‘   r   rT   )
r!   rx   Úspec_path_listsr   Ú
spec_pathsÚ	env_pathsr>  Úextant_pathsrÊ   Úunique_pathss
             r   rŸ  zEnvironmentInfo._build_paths×  s«   € ô. —_‘_×2Ñ2°?ÓCˆ
Ü—K‘K  bÓ)×/Ñ/´·
±
Ó;ˆ	Ü—‘ 
¨IÓ6ˆÙ=C”tœF¤2§7¡7§=¡=°%Ó8Ô9ÈˆÙØ4°t·z±z³|ÑCˆCÜ×"Ñ"×9Ñ9¸#Ó>Ð>Ü& |Ó4ˆÜ�z‰z�‰˜|Ó,Ð,r   )Nr   r>   r+  )T)r   Úboolr?   r.  )!r   r   r   rD   r"   rF   r‰   rŠ   r@  rC  rI  rK  rR  rW  r[  rc  rg  rf  rU  rp  rt  rv  rx  rz  r  r�  r…  r‡  r„  rŠ  rœ  r¢  rŸ  r   r   r   r4  r4  z  s  „ ñô.?ð ñ	ó ð	ð ñ	ó ð	ð ñLó ðLð& ñ
ó ð
ð ñLó ðLð( ñMó ðMð ñ'ó ð'ðR ñIó ðIð& ñó ðð2 ñ%ó ð%ðN ñ	'ó ð	'ò!3ðF ñ
5ó ð
5ð ñ>ó ð>ð ñó ðð< ñNó ðNð ñBó ðBð ñ	Fó ð	Fð ñó ðð6 ñMó ðMð ñHó ðHð" ñEó ðEð ñ
5ó ð
5ð ñ*ó ð*ð ò Có ð CôD;óz-r   r4  )rD   Ú
__future__r   rœ   r˜   r±   rR   Úos.pathÚplatformÚtypingr   r   Úmore_itertoolsr   Údistutils.errorsr�   Útyping_extensionsr   r   Úsystemr   r
   Údictr2  r   rH   r�   r.  r4  r   r   r   ú<module>r·     s¢   ðòõ #ã Û Û Û 	Û Û ß +å *ã áß<ñ ˜˜Ÿ™Ó*¨iÒ7ÛÞ÷!ñ !ñ #›f€Gˆ^Ó$÷v
ñ v
÷rzñ z÷zP/ñ P/ôf1�yô 1÷|	-ò |	-r   