Ë
    nûàg'¡  ã                  ó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© ó    úM/var/www/skyplay_api_hub/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                   › �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ú\r.   ©r!   Úhidex86r   s      r   Úcurrent_dirzPlatformInfo.current_dirZ   sR   € ð$ × Ñ  EÒ)©gð ð	
ð × Ñ  GÒ+±ð ð	
ð
 �d×&Ñ&Ð'Ð(ð	
r   c                ól   — | j                   dk(  r|rdS | j                   dk(  r|rdS d| j                   › �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   sL   € ð$ —‘ 5Ò(©Wð ð	
ð —‘ 7Ò*©sð ð	
ð
 �d—o‘oÐ&Ð'ð	
r   c                óŒ   — |rdn| j                   }| j                  |k(  rdS | j                  «       j                  dd|› d�«      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   r3   r$   )r/   r(   r8   r   )r!   Úforcex86Úcurrents      r   Ú	cross_dirzPlatformInfo.cross_dirŠ   sQ   € ñ  $‘%¨×)9Ñ)9ˆð �‰ 'Ò)ð ð	
ð —‘Ó"×*Ñ*¨4°2°g°Y¸a°ÓAð	
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ÚjoinrN   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©rQ   rR   rS   rT   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
        ÚVS7rW   r'   s    r   ÚvszRegistryInfo.vsÚ   rY   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	   ©rQ   rR   rS   r`   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
        ÚNETFXSDKrb   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)rJ   r0   rQ   rR   rS   )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ÚCloseKeyro   ÚHKEYSÚOSErrorrJ   r0   ÚQueryValueEx)	r!   rm   Ú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=   r@   rB   )r   r   r   rC   r   r   r   r   r   rt   r"   rE   rN   rT   rX   r\   r^   r`   rc   rf   rh   ro   r~   r   r   r   rG   rG   ¢   sø   „ ñð 	×ÑØ× Ñ Ø×!Ñ!Ø× Ñ ð	€Eó ð ò	ó ð	ð ñ	6ó ð	6ð ñ	-ó ð	-ð ñ	-ó ð	-ð ò	%ó ð	%ð ò	 ó ð	 ð ñ	;ó ð	;ð ñ	<ó ð	<ð ò	/ó ð	/óBó&'r   rG   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 rI   )ÚrirJ   Ú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„   ro   rX   r^   r\   Ú	itertoolsÚproductrt   r   rr   rq   ru   ÚQueryInfoKeyÚrangeÚ
contextlibÚsuppressÚ
ValueErrorÚfloatÚ	EnumValueÚappendÚEnumKeyr“   )r!   r{   ÚvckeysÚvs_versr|   rm   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)
rQ   Úlistdirru   rR   rS   ÚopenÚjsonÚloadÚ_as_float_versionÚKeyError)	r!   Úvs_versionsÚinstances_dirÚhashed_namesrw   Ú
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ž   rS   Ú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                  d›�«      }| j
                  j                  | j
                  j                  | j                  d›«      xs |S )zp
        Microsoft Visual Studio directory.

        Return
        ------
        str
            path
        úMicrosoft Visual Studio ú0.1f)rQ   rR   rS   ÚProgramFilesx86rˆ   r„   r~   r\   )r!   Údefaults     r   ÚVSInstallDirzSystemInfo.VSInstallDirè  s]   € ô —'‘'—,‘,Ø× Ñ Ð$<¸T¿[¹[ÈÐ<NÐ"Oó
ˆð
 �w‰w�~‰~˜dŸg™gŸj™j¨T¯[©[¸Ð,>Ó@Ò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_legacyrQ   rR   ÚisdirrŽ   r�   r�   )r!   rR   Ú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Å   rQ   rR   rS   r®   r²   r‰   ru   Ú
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                  d›d�«      }t         j                  j                  | j
                  j                  | j                  d›«      }| j
                  j                  |d«      }|r t         j                  j                  |d«      n|}| j
                  j                  | j
                  j                  | j                  d›«      xs |S )z{
        Locate Visual C++ for versions prior to 2017.

        Return
        ------
        str
            path
        rÁ   rÂ   z\VCÚ
installdirÚVC)	rQ   rR   rS   rÃ   rˆ   r„   r^   r~   rX   )r!   rÄ   Úreg_pathÚ	python_vcÚ
default_vcs        r   rÈ   zSystemInfo._guess_vc_legacy*  s´   € ô —'‘'—,‘,Ø× Ñ Ø'¨¯©°DÐ'9¸Ð=ó
ˆô —7‘7—<‘< §¡× 5Ñ 5¸$¿+¹+ÀdÐ9KÓMˆØ—G‘G—N‘N 8¨\Ó:ˆ	Ù6?”R—W‘W—\‘\ )¨TÔ2ÀWˆ
ð �w‰w�~‰~˜dŸg™gŸj™j¨T¯[©[¸Ð,>Ó@Ò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_namerQ   rR   rS   ÚWindowsSdkDirr'   s    r   ÚWindowsSdkLastVersionz SystemInfo.WindowsSdkLastVersionV  s*   € ð ×&Ñ&¤r§w¡w§|¡|°D×4FÑ4FÈÓ'NÓOÐOr   c                ó¤  — d}| j                   D ]Y  }t        j                  j                  | j                  j
                  d|› �«      }| j                  j                  |d«      }|sŒY n |rt        j                  j                  |«      s~t        j                  j                  | j                  j                  | j                  d›«      }| j                  j                  |d«      }|r t        j                  j                  |d«      }|rt        j                  j                  |«      sv| j                   D ]g  }|d|j                  d«       }d	|› �}t        j                  j                  | j                  |«      }t        j                  j                  |«      sŒf|}Œi |rt        j                  j                  |«      sb| j                   D ]S  }d
|› �}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   ÚvÚinstallationfolderrÂ   rÒ   ÚWinSDKNr¼   zMicrosoft SDKs\Windows Kits\zMicrosoft SDKs\Windows\vÚPlatformSDK)rÞ   rQ   rR   rS   r„   rc   r~   rÉ   r^   r‰   Úrfindr‚   rË   )r!   Úsdkdirr§   ÚlocrR   Úinstall_baseÚintverÚds           r   râ   zSystemInfo.WindowsSdkDirb  sÂ  € ð  ˆØ×)Ñ)ò 	ˆCä—'‘'—,‘,˜tŸw™w×2Ñ2°a¸°u°IÓ>ˆCØ—W‘W—^‘^ CÐ)=Ó>ˆFÚÙð	ñ œRŸW™WŸ]™]¨6Ô2ä—7‘7—<‘< §¡× 5Ñ 5¸$¿+¹+ÀdÐ9KÓMˆDØŸ7™7Ÿ>™>¨$°Ó=ˆLÙÜŸ™Ÿ™ l°HÓ=�ÙœRŸW™WŸ]™]¨6Ô2à×-Ñ-ò �ØÐ-˜sŸy™y¨›~Ð.�Ø6°v°hÐ?�Ü—G‘G—L‘L ×!2Ñ!2°DÓ9�Ü—7‘7—=‘= Õ#Ø‘Fðñ œRŸW™WŸ]™]¨6Ô2à×-Ñ-ò �Ø2°3°%Ð8�Ü—G‘G—L‘L ×!2Ñ!2°DÓ9�Ü—7‘7—=‘= Õ#Ø‘Fð	ñ
 ä—W‘W—\‘\ $×"3Ñ"3°]ÓCˆFØˆr   c                ód  — | j                   dk  rd}d}nBd}| j                   dk  rdnd}| j                  j                  d|¬«      j                  d	d
«      }d|› d|› �}g }| j                   dk\  rJ| j                  D ];  }|t
        j                  j                  | j                  j                  ||«      gz  }Œ= | j                  D ]?  }|t
        j                  j                  | j                  j                  d|› d�|«      gz  }ŒA |D ]$  }| j                  j                  |d«      }|sŒ"|c S  y)zy
        Microsoft Windows SDK executable directory.

        Return
        ------
        str
            path
        rÚ   é#   r   é(   rÛ   TF)r   r5   r3   ú-zWinSDK-NetFxÚToolsrÍ   rå   ÚAræ   N)rˆ   rJ   r6   r   ÚNetFxSdkVersionrQ   rR   rS   r„   rf   rÞ   rc   r~   )	r!   Únetfxverr    r5   ÚfxÚregpathsr§   rR   Úexecpaths	            r   ÚWindowsSDKExecutablePathz#SystemInfo.WindowsSDKExecutablePath�  s8  € ð �;‰;˜$ÒØˆHØ‰DàˆHØ"Ÿk™k¨TÒ1‘d°uˆGØ—7‘7×&Ñ&¨4¸Ð&ÓA×IÑIÈ$ÐPSÓTˆDØ˜H˜: U¨4¨&Ð1ˆð ˆØ�;‰;˜$ÒØ×+Ñ+ò G�ØœRŸW™WŸ\™\¨$¯'©'×*;Ñ*;¸SÀ"ÓEÐFÑF‘ðGð ×)Ñ)ò 	LˆCØœŸ™Ÿ™ d§g¡g×&9Ñ&9¸Q¸s¸eÀ1¸:ÀrÓJÐKÑK‰Hð	Lð ò 	 ˆDØ—w‘w—~‘~ dÐ,@ÓAˆHÚØ’ð	 ð
 r   c                óÆ   — t         j                  j                  | j                  j                  | j
                  d›d�«      }| j                  j                  |d«      xs dS )zl
        Microsoft Visual F# directory.

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

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

        Return
        ------
        str
            version
        rà   )rá   rQ   rR   rS   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õ   rQ   rR   rS   r„   rf   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©rQ   rR   rS   r�   r„   r~   rX   ©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|› �«      }t        | d|› �«      }|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
        ÚframeworkverÚFrameworkDirrå   r   rÛ   zv4.0rÙ   Nr½   Úv4z
v4.0.30319úv3.5rØ   )r   ú
v2.0.50727g       @)zv3.0r!  r   )r„   r~   rX   Úgetattrrá   rˆ   r   )r!   ÚbitsÚreg_verÚdot_net_dirr§   s        r   r  z!SystemInfo._find_dot_net_versions;  sÃ   € ð —'‘'—.‘. §¡§¡¨|¸D¸6Ð-BÓCˆÜ˜d l°4°&Ð$9Ó:ˆØÒ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rI   )rQ   rR   rÉ   rS   Ú
startswith)Ú.0Údir_namerR   Úprefixs     €€r   ú	<genexpr>z0SystemInfo._use_last_dir_name.<locals>.<genexpr>j  sF   øè ø€ ò 
àÜ�w‰w�}‰}œRŸW™WŸ\™\¨$°Ó9Ô:Ø×#Ñ# FÔ+ô ñ
ùs   ƒAANr   )ÚreversedrQ   r®   Únext)rR   r+  Úmatching_dirss   `` r   rá   zSystemInfo._use_last_dir_nameY  s4   ù€ ô"
ä$¤R§Z¡Z°Ó%5Ó6ô
ˆô �M 4Ó(Ò.¨BÐ.r   rI   r=   )r>   zdict[float, str])r>   ztuple[LiteralString, ...]©r>   z
str | None)r>   ztuple[str, ...])r   )#r   r   r   rC   r
   rD   r�   r‚   rÃ   r"   r‡   r�   r…   Ústaticmethodr²   rE   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)	Ú_EnvironmentDictrA   Úincluderà   ÚlibpathrR   zNotRequired[str | None]Úpy_vcruntime_redistN)r   r   r   Ú__annotations__r   r   r   r3  r3  s  s   … ØƒLØ	ƒHØƒLØ
ƒIØ0Ô0r   r3  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   rJ   rG   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
        )r;  rˆ   r'   s    r   rˆ   zEnvironmentInfo.vs_verœ  ó   € ð �w‰w�~‰~Ðr   c                ó.   — | j                   j                  S )zp
        Microsoft Visual C++ version.

        Return
        ------
        float
            version
        )r;  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|› �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 Tools)rˆ   rJ   r6   rQ   rR   rS   r;  rÅ   )r!   ÚpathsÚarch_subdirrR   s       r   ÚVSToolszEnvironmentInfo.VSTools´  s’   € ð  Ð!1Ð2ˆà�;‰;˜$ÒØŸ'™'×-Ñ-°dÀÐ-ÓEˆKØÐJÐKÑKˆEØÐ5Ð6Ñ6ˆEØÐ5°k°]ÐCÐDÑDˆ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)rQ   rR   rS   r;  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|› �d|› �g}| j                   dk\  r	|d|› �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   ÚLibz
ATLMFC\LibrÍ   z	Lib\store)rˆ   rJ   r8   rQ   rR   rS   r;  rË   )r!   rD  rC  rR   s       r   ÚVCLibrarieszEnvironmentInfo.VCLibraries×  s£   € ð �;‰;˜$ÒØŸ'™'×,Ñ,°Ð,Ó6‰KàŸ'™'×,Ñ,°TÐ,Ó:ˆKØ�{�mÐ$¨°K°=Ð&AÐBˆà�;‰;˜$ÒØ˜ ; -Ð0Ð1Ñ1ˆ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ˆ   rQ   rR   rS   r;  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|› �«      gz  }| j
                  dk(  rOd| j                  j                  d¬«      › �}|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ÚBinrÍ   rL  rJ  zbin\HostX86%szbin\HostX64%srK  )r;  rQ   rR   rS   rË   rˆ   rJ   r<   r6   r0   r8   r/   r(   )r!   r;  Útoolsr:   rD  rR   Úhost_dirs          r   ÚVCToolszEnvironmentInfo.VCToolsú  s½  € ð �W‰WˆÜ—‘—‘˜bŸo™o¨|Ó<Ð=ˆàŸ;™;¨$Ò.‘4°EˆØ—g‘g×'Ñ'¨Ó1ˆÙØ”b—g‘g—l‘l 2§?¡?°c¸+¸Ð4GÓHÐIÑIˆEà�;‰;˜$ÒØ˜Ÿ™×,Ñ,°TÐ,Ó:Ð;Ð<ˆ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|› �«      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Ù   TrB  rM  rK  rà   Úum)	rˆ   rJ   r8   rQ   rR   rS   r;  râ   Ú_sdk_subdir)r!   rD  rà   Úlibvers       r   ÚOSLibrarieszEnvironmentInfo.OSLibraries$  s·   € ð �;‰;˜$ÒØŸ'™'×,Ñ,°T¸tÐ,ÓDˆKÜ—G‘G—L‘L §¡×!6Ñ!6¸#¸k¸]Ð8KÓLÐMÐMð Ÿ'™'×,Ñ,°Ð,Ó6ˆKÜ—'‘'—,‘,˜tŸw™w×4Ñ4°eÓ<ˆCØ×%Ñ%ˆFÜ—G‘G—L‘L ¨¨°°;°-Ð&@ÓAÐBÐBr   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�«      t         j                  j                  ||› d�«      t         j                  j                  ||› d�«      gS )	zu
        Microsoft Windows SDK Include.

        Return
        ------
        list of str
            paths
        r4  rÙ   ÚglrÍ   r   ÚsharedrX  Úwinrt)rQ   rR   rS   r;  râ   rˆ   rY  )r!   r4  Úsdkvers      r   Ú
OSIncludeszEnvironmentInfo.OSIncludes8  sº   € ô —'‘'—,‘,˜tŸw™w×4Ñ4°iÓ@ˆà�;‰;˜$ÒØœRŸW™WŸ\™\¨'°4Ó8Ð9Ð9ð �{‰{˜dÒ"Ø×)Ñ)‘à�ä—‘—‘˜W¨¨°Ð&7Ó8Ü—‘—‘˜W¨¨° mÓ4Ü—‘—‘˜W¨¨°Ð&6Ó7ðð 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| j
                  d›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)rQ   rR   rS   r;  râ   rˆ   r[  )r!   Úrefr5  s      r   Ú	OSLibpathzEnvironmentInfo.OSLibpathR  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×)Ñ)Ø#Ø&Ø—{‘{ 4Ð(Ø Ø)Øóðñ ˆGð$ ˆr   c                ó4   — t        | j                  «       «      S )zs
        Microsoft Windows SDK Tools.

        Return
        ------
        list of str
            paths
        )ÚlistÚ
_sdk_toolsr'   s    r   ÚSdkToolszEnvironmentInfo.SdkToolsz  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|› �}t        j                  j                  | j                  j
                  |«      –— | j                   dv rv| j                  j                  «       rd}n| j                  j                  dd¬	«      }d
|› �}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
        rJ  rÚ   rS  zBin\x86TrK  )rÙ   rÚ   r   rB  zBin\NETFX 4.0 ToolsN)rˆ   rQ   rR   rS   r;  râ   rJ   r0   r6   r,   rã   rú   )r!   Úbin_dirrD  rR   r`  s        r   rl  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�Ø)¨+¨Ð7ˆDÜ—'‘'—,‘,˜tŸw™w×4Ñ4°dÓ;Ó;à�[‰[˜DÒ Ü—7‘7—<‘< §¡× 5Ñ 5°uÓ=ˆDØŸ'™'×-Ñ-°$Ð-Ó7ˆKØ—W‘W×2Ñ2ˆFÜ—'‘'—,‘,˜t¨ x°¨}Ð%=Ó>Ò>à�7‰7×+Ò+Ø—'‘'×2Ñ2Ó2ð ,ùs   ‚HHc                ó@   — | j                   j                  }|r|› d�S dS )zu
        Microsoft Windows SDK version subdir.

        Return
        ------
        str
            subdir
        r3   r   )r;  rã   ©r!   Úucrtvers     r   rY  zEnvironmentInfo._sdk_subdir©  s&   € ð —'‘'×/Ñ/ˆÙ#*�7�)˜2�Ð2°Ð2r   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ˆ   rQ   rR   rS   r;  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   )rJ   r;  rˆ   r,   r0   r/   r(   r  rQ   rR   rS   r  r  r  )r!   rJ   r;  Ú	include32Ú	include64rT  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|› �«      gS )z~
        Microsoft .Net Framework SDK Libraries.

        Return
        ------
        list of str
            paths
        rÍ   TrK  zlib\um)rˆ   r;  r	  rJ   r8   rQ   rR   rS   )r!   rD  s     r   ÚNetFxSDKLibrariesz!EnvironmentInfo.NetFxSDKLibrariesä  sa   € ð �;‰;˜Ò T§W¡W×%8Ò%8ØˆIà—g‘g×(Ñ(¨TÐ(Ó2ˆÜ—‘—‘˜TŸW™W×0Ñ0°V¸K¸=Ð2IÓJÐKÐKr   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ˆ   r;  r	  rQ   rR   rS   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)rQ   rR   rS   r;  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                   d›d|› �}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Û   rJ  TrL  r   zMSBuild\rÂ   z\binÚRoslyn)	rˆ   r;  rÃ   rJ   r6   rÅ   rQ   rR   rS   )r!   Ú	base_pathrD  rR   Úbuilds        r   ÚMSBuildzEnvironmentInfo.MSBuild  sº   € ð �;‰;˜ÒØˆIØ�[‰[˜4ÒØŸ™×/Ñ/ˆIØŸ'™'×-Ñ-°dÐ-Ó;‰KàŸ™×,Ñ,ˆIØˆKà˜4Ÿ;™; tÐ,¨D°°Ð>ˆÜ—‘—‘˜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ˆ   rQ   rR   rS   r;  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Í   TrK  rà   Úucrt)	rˆ   rJ   r8   rQ   rR   rS   r;  r  Ú_ucrt_subdir)r!   rD  rà   rr  s       r   ÚUCRTLibrarieszEnvironmentInfo.UCRTLibraries:  sx   € ð �;‰;˜ÒØˆIà—g‘g×(Ñ(¨TÐ(Ó2ˆÜ�g‰g�l‰l˜4Ÿ7™7×5Ñ5°uÓ=ˆØ×#Ñ#ˆÜ—‘—‘˜S W I¨T°+°Ð"?Ó@ÐAÐAr   c                óè   — | j                   dk  rg S t        j                  j                  | j                  j
                  d«      }t        j                  j                  || j                  › d�«      gS )z�
        Microsoft Universal C Runtime SDK Include.

        Return
        ------
        list of str
            paths
        rÍ   r4  rˆ  )rˆ   rQ   rR   rS   r;  r  r‰  )r!   r4  s     r   ÚUCRTIncludeszEnvironmentInfo.UCRTIncludesL  sY   € ð �;‰;˜ÒØˆIä—'‘'—,‘,˜tŸw™w×9Ñ9¸9ÓEˆÜ—‘—‘˜W¨×):Ñ):Ð(;¸4Ð&@ÓAÐBÐBr   c                ó@   — | j                   j                  }|r|› d�S dS )z�
        Microsoft Universal C Runtime SDK version subdir.

        Return
        ------
        str
            subdir
        r3   r   )r;  r  rq  s     r   r‰  zEnvironmentInfo._ucrt_subdir\  s&   € ð —'‘'×4Ñ4ˆÙ#*�7�)˜2�Ð2°Ð2r   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ˆ   r;  rý   r'   s    r   ÚFSharpzEnvironmentInfo.FSharpi  s4   € ð �$—+‘+Ô$ Ò$ØˆIð %ð —‘×(Ñ(Ð)Ð)r   c                ó@  ‡‡— d| j                   › d�Š| 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  › d�dt        | j                  «      dz  › d�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.
        Ú	vcruntimez0.dllTrK  r3   z\Toolsz\RedistrŒ   ÚonecoreÚredistzMicrosoft.VCé
   z.CRTc              3  óh   •K  — | ])  \  }}t         j                  j                  |‰|‰«      –— Œ+ y ­wrI   )rQ   rR   rS   )r)  r+  Úcrt_dirrD  r‘  s      €€r   r,  z2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>•  s0   øè ø€ ò 
á!�˜ô �G‰G�L‰L˜ ¨g°y×Añ
ùs   ƒ/2N)r‰   rJ   r8   Ústripr;  rË   rQ   rR   Údirnamer   rÉ   rS   r®   Úintrˆ   r—   r˜   r.  ÚfilterÚisfile)r!   ÚprefixesÚ
tools_pathÚredist_pathÚcrt_dirsÚcandidate_pathsrD  r‘  s         @@r   ÚVCRuntimeRedistzEnvironmentInfo.VCRuntimeRedistx  sN  ù€ ð   §¡˜}¨EÐ2ˆ	Ø—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ˆð ˜4Ÿ;™;¨Ñ+Ð,¨DÐ1àœ3˜tŸ{™{Ó+¨bÑ0Ð1°Ð6ð
ˆô
ä%.×%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
        r4  rà   r5  rR   )r4  rà   r5  rR   é   r6  )r3  Ú_build_pathsrH  ra  rŒ  r}  rN  r[  ry  rŠ  r{  rP  ri  rV  rE  r  rm  ru  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|}|s2|j                  «       › d�}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 environment variable is empty)r—   ÚchainÚfrom_iterabler
   rD   r¾   rQ   Úpathseprk  rš  rR   rÉ   ÚupperrŽ   r�   r�   r   rS   )
r!   rw   Úspec_path_listsr¥  Ú
spec_pathsÚ	env_pathsrC  Ú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ÈˆÙØ—Z‘Z“\�NÐ"@ÐAˆCÜ×"Ñ"×9Ñ9¸#Ó>Ð>Ü& |Ó4ˆÜ�z‰z�‰˜|Ó,Ð,r   )Nr   r=   r0  )T)r¥  Úboolr>   r3  )!r   r   r   rC   r"   rE   rˆ   r‰   rE  rH  rN  rP  rV  r[  ra  ri  rm  rl  rY  ru  ry  r{  r}  r  r„  r†  rŠ  rŒ  r‰  r�  r¡  r§  r¤  r   r   r   r9  r9  {  s  „ ñô.?ð ñ	ó ð	ð ñ	ó ð	ð ñLó ðLð& ñ
ó ð
ð ñLó ðLð( ñMó ðMð ñ'ó ð'ðR ñCó ðCð& ñó ðð2 ñ%ó ð%ðN ñ	'ó ð	'ò!3ðF ñ
3ó ð
3ð ñ>ó ð>ð ñó ðð< ñLó ðLð ñBó ðBð ñ	Fó ð	Fð ñó ðð6 ñMó ðMð ñBó ðBð" ñCó ðCð ñ
3ó ð
3ð ñ*ó ð*ð ò Có ð CôD;óz-r   r9  )rC   Ú
__future__r   r›   r—   r°   rQ   Úos.pathÚplatformÚtypingr   r   Úmore_itertoolsr   Údistutils.errorsrŽ   Útyping_extensionsr   r   Úsystemr   r
   Údictr7  r   rG   r€   r3  r9  r   r   r   ú<module>r¼     s¢   ðòõ #ã Û Û Û 	Û Û ß +å *ã áß<ñ ˜˜Ÿ™Ó*¨iÒ7ÛÞ÷!ñ !ñ #›f€Gˆ^Ó$÷v
ñ v
÷rzñ z÷zQ/ñ Q/ôh1�yô 1÷|	-ò |	-r   