§
    »"½jŸ¢  ã                  ó|  — 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dS )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dS )ÚwinregN)Ú__name__Ú
__module__Ú__qualname__Ú
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOT© ó    úO/home/spazio/kingdom_calls/venv/lib/python3.11/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¦  «                             ¦   «         Zdd„Ze	d„ ¦   «         Z
d„ Zd	„ Zddd„Zddd„Zdd„ZdS )ÚPlatformInfoz�
    Current and Target Architectures information.

    Parameters
    ----------
    arch: str
        Target architecture.
    Úprocessor_architectureÚ ÚreturnÚNonec                ó`   — |                      ¦   «                              dd¦  «        | _        d S )NÚx64Úamd64)ÚlowerÚreplaceÚarch)Úselfr"   s     r   Ú__init__zPlatformInfo.__init__5   s%   € Ø—J’J‘L”L×(Ò(¨°Ñ8Ô8ˆŒ	ˆ	ˆ	r   c                óV   — | 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˜œŸš¨Ñ,Ô,¨qÑ0Ð2Ð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   FÚstrc                óR   — | j         dk    r|rdn| j         dk    r|rdn	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ú\r0   ©r#   Úhidex86r   s      r   Úcurrent_dirzPlatformInfo.current_dirZ   sM   € ð$ Ô  EÒ)Ð)¨gÐ)ð ˆBð Ô  GÒ+Ð+°Ð+ð �à(�dÔ&Ð(Ð(ð	
r   c                óR   — | j         dk    r|rdn| j         dk    r|rdn	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   r5   r6   r-   r7   s      r   Ú
target_dirzPlatformInfo.target_dirr   sJ   € ð$ ” 5Ò(Ð(¨WÐ(ð ˆBð ” 7Ò*Ð*¨sÐ*ð �à'�d”oÐ'Ð'ð	
r   c                óŠ   — |rdn| j         }| j        |k    rdn+|                      ¦   «                              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   r6   r&   )r1   r*   r;   r!   )r#   Úforcex86Úcurrents      r   Ú	cross_dirzPlatformInfo.cross_dirŠ   sU   € ð  $Ð9�%�%¨Ô)9ˆð Œ 'Ò)Ð)ð ˆBà—’Ñ"Ô"×*Ò*¨4°°g°°°ÑAÔAð	
r   N©r   r   )FF©r   r3   ©F)r   r   r   Ú__doc__r
   Úgetr    r1   r$   Úpropertyr*   r.   r2   r9   r;   r?   r   r   r   r   r   )   sÓ   € € € € € ðð ð �'”+Ð6¸Ñ;Ô;×AÒAÑCÔC€Kð9ð 9ð 9ð 9ð ð	4ð 	4ñ „Xð	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dS )ÚRegistryInfozŸ
    Microsoft Visual Studio related registry information.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    r   r   c                ó   — || _         d S ©N)Úpi)r#   Úplatform_infos     r   r$   zRegistryInfo.__init__³   s   € ØˆŒˆˆr   r3   c                ó   — dS )z€
        Microsoft Visual Studio root registry key.

        Return
        ------
        str
            Registry key
        ÚVisualStudior   r)   s    r   ÚvisualstudiozRegistryInfo.visualstudio¶   s	   € ð ˆ~r   c                óL   — t           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�|Š|˜DÔ-¨uÑ5Ô5Ð5r   c                óL   — t           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�|Š|˜DœH eÑ,Ô,Ð,r   c                óL   — t           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                ó   — dS )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                ó   — dS )zq
        Microsoft SDK registry key.

        Return
        ------
        str
            Registry key
        zMicrosoft SDKsr   r)   s    r   Úmicrosoft_sdkzRegistryInfo.microsoft_sdkò   s
   € ð  Ðr   c                óL   — t           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�|Š|˜DÔ.°	Ñ:Ô:Ð:r   c                óL   — t           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�|Š|˜DÔ.°
Ñ;Ô;Ð;r   c                ó   — dS )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   Fc                ó„   — | j                              ¦   «         s|rdnd}t          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   r2   rQ   rR   rS   )r#   Úkeyr,   Únode64s       r   Ú	microsoftzRegistryInfo.microsoft"  s?   € ð  ”w×-Ò-Ñ/Ô/ÐI°3ÐI��¸MˆÝŒw�|Š|˜J¨°¸SÑAÔAÐAr   c           	     ó  — t           j        }t           j        }t           j        }| j        }| j        D ]Ò}d}	  || ||¦  «        d|¦  «        }nV# t          $ rI | j                             ¦   «         s+	  || ||d¦  «        d|¦  «        }n# t          $ r Y Y Œgw xY wY ŒmY nw xY w	 t          j	        ||¦  «        d         |r ||¦  «         c S c S # t          $ r Y nw xY w	 |r ||¦  «         ŒÀ# |r ||¦  «         w w xY wdS )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   r2   ÚQueryValueEx)	r#   rm   ÚnameÚkey_readÚopenkeyÚclosekeyÚmsÚhkeyÚbkeys	            r   ÚlookupzRegistryInfo.lookup5  s‰  € õ  ”?ˆÝ”.ˆÝ”?ˆØŒ^ˆØ”Jð 	#ð 	#ˆDØˆDð	Ø�w˜t R R¨¡W¤W¨a°Ñ:Ô:��øÝð ð ð Ø”w×-Ò-Ñ/Ô/ð ð!Ø&˜w t¨R¨R°°T©]¬]¸A¸xÑHÔH˜˜øÝ"ð !ð !ð !Ø ˜˜ð!øøøð �Hð	 ˜ðøøøð#ÝÔ*¨4°Ñ6Ô6°qÔ9ð ð #Ø�H˜T‘N”N�N�N�N�Nð#ð #ð #øõ ð ð ð Ø�ðøøøØàð #Ø�H˜T‘N”N�Nøøð ð #Ø�H˜T‘N”N�N�Nð#øøøàˆtsY   ¸AÁ#B#Á4BÂB#Â
BÂB#ÂBÂB#Â"B#Â'CÃ
C!ÃC3Ã C!Ã!C3Ã3DNr@   rA   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ð ð  ð  ð  ð ð	ð 	ð 	ñ „Xð	ð ð	6ð 	6ñ „Xð	6ð ð	-ð 	-ñ „Xð	-ð ð	-ð 	-ñ „Xð	-ð ð	%ð 	%ð 	%ñ „Xð	%ð ð	 ð 	 ð 	 ñ „Xð	 ð ð	;ð 	;ñ „Xð	;ð ð	<ð 	<ñ „Xð	<ð ð	/ð 	/ð 	/ñ „Xð	/ðBð Bð Bð 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"dS ),Ú
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)Nr   r   c                ó¬   — || _         | j         j        | _        |                      ¦   «         | _        |p|                      ¦   «         x| _        | _        d S 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  sM   € ØˆŒØ”'”*ˆŒà"×;Ò;Ñ=Ô=ˆÔð %+Ð$R¨d×.PÒ.PÑ.RÔ.RÐRˆŒ�d”k�k�kr   c                óö   — |                       ¦   «         }|s&| j        st          j                             d¦  «        ‚t          |¦  «        }|                     | 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  sz   € ð ×+Ò+Ñ-Ô-ˆàð 	˜tÔ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 �]w\  }}	 t          j	        | ||¦  «        dt          j
        ¦  «        }n# t          $ r Y Œ>w xY w|5  t          j        |¦  «        \  }}}	t          |¦  «        D ]t}
t          j        t           ¦  «        5  t#          t          j        ||
¦  «        d         ¦  «        }||vr|                     |¦  «         ddd¦  «         n# 1 swxY w Y   Œut          |¦  «        D ]n}
t          j        t           ¦  «        5  t#          t          j        ||
¦  «        ¦  «        }||vr|                     |¦  «         ddd¦  «         n# 1 swxY w Y   Œo	 ddd¦  «         n# 1 swxY w Y   �Œyt+          |¦  «        S )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ÔˆØ”'”*˜dœgÔ3°T´W´ZÐ@ˆØˆÝ"Ô*¨4¬7¬=¸&ÑAÔAð 	0ñ 	0‰IˆD�#ðÝ”~ d¨B¨B¨s©G¬G°Q½¼ÑHÔH��øÝð ð ð Ø�ðøøøàð 0ð 0Ý%+Ô%8¸Ñ%>Ô%>Ñ"�˜ Ý˜v™œð 0ð 0�AÝ#Ô,­ZÑ8Ô8ð 0ð 0Ý#¥FÔ$4°T¸1Ñ$=Ô$=¸aÔ$@ÑAÔA˜Ø gÐ-Ð-Ø#ŸNšN¨3Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øõ ˜w™œð 0ð 0�AÝ#Ô,­ZÑ8Ô8ð 0ð 0Ý#¥F¤N°4¸Ñ$;Ô$;Ñ<Ô<˜Ø gÐ-Ð-Ø#ŸNšN¨3Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øð0ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ùõ �g‰ŒÐsn   Á*BÂ
BÂBÂAF=ÃAD&	ÄF=Ä&D*Ä*F=Ä-D*Ä..F=Å<F$	ÆF=Æ$F(Æ(F=Æ+F(Æ,F=Æ=G	ÇG	údict[float, str]c                ó  — i }d}	 t          j        |¦  «        }n# t          $ r |cY S w xY w|D ]Ñ}	 t           j                             ||d¦  «        }t          |dd¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |d         }t          j        t           j                             |d¦  «        ¦  «         |||                      |d	         ¦  «        <   Œ»# t          t          f$ r Y ŒÎw xY w|S )
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­  sq  € ð )+ˆØTˆð	Ýœ: mÑ4Ô4ˆLˆLøåð 	ð 	ð 	àÐÐÐð	øøøð !ð 	ð 	ˆDðåœWŸ\š\¨-¸¸|ÑLÔL�
Ý˜* d°WÐ=Ñ=Ô=ð 2ÀÝ œI jÑ1Ô1�Eð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2àÐ 2Ô3�õ ”
�2œ7Ÿ<š<¨Ð1AÑBÔBÑCÔCÐCð ð ˜D×2Ò2°5Ð9NÔ3OÑPÔPÑQÐQøõ �XÐ&ð ð ð à�ðøøøð ÐsB   † ›*©*²3C*Á%BÁ:C*ÂB
	Â
C*ÂB
	ÂAC*Ã*C>Ã=C>c                ó|   — t          d                     |                      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×  s3   € õ �S—X’X˜gŸmšm¨CÑ0Ô0°°!°Ô4Ñ5Ô5Ñ6Ô6Ð6r   c                óº   — t           j                             | j        d| j        d›�¦  «        }| j                             | j        j        | j        d›¦  «        p|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è  sX   € õ ”'—,’,ØÔ Ð"O¸T¼[Ð"OÐ"OÐ"Oñ
ô 
ˆð
 Œw�~Š~˜dœgœj¨T¬[Ð*?Ð*?Ñ@Ô@ÐKÀGÐKr   c                óÖ   — |                       ¦   «         p|                      ¦   «         }t          j                             |¦  «        s!d}t
          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ú  s[   € ð �~Š~ÑÔÐ: 4×#8Ò#8Ñ#:Ô#:ˆåŒw�}Š}˜TÑ"Ô"ð 	?Ø<ˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>àˆr   c                óŒ  — | j         dk    rdS 	 | j        | j                  }n# t          $ r
 | j        }Y nw xY wt          j                             |d¦  «        }	 t	          j        |¦  «        d         }|                      |¦  «        | _	        t          j                             ||¦  «        S # t          t          f$ r Y dS 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Ö   € ð Œ;˜$ÒÐØ�2ð	'àÔ(¨¬Ô5ˆFˆFøÝð 	'ð 	'ð 	'àÔ&ˆFˆFˆFð	'øøøõ ”7—<’< Ð(8Ñ9Ô9ˆð	å”Z Ñ)Ô)¨"Ô-ˆFØ×0Ò0°Ñ8Ô8ˆDŒKÝ”7—<’< ¨&Ñ1Ô1Ð1øÝ�Ð$ð 	ð 	ð 	Ø�2�2ð	øøøs   �" ¢6µ6ÁAB. Â.CÃCc                óœ  — t           j                             | j        d| j        d›d�¦  «        }t           j                             | j        j        | j        d›¦  «        }| j                             |d¦  «        }|r t           j                             |d¦  «        n|}| j                             | j        j        | j        d›¦  «        p|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³   € õ ”'—,’,ØÔ Ø=¨¬Ð=Ð=Ð=Ð=ñ
ô 
ˆõ ”7—<’< ¤Ô 5¸$¼+Ð7LÐ7LÑMÔMˆØ”G—N’N 8¨\Ñ:Ô:ˆ	Ø6?ÐL•R”W—\’\ )¨TÑ2Ô2Ð2ÀWˆ
ð Œw�~Š~˜dœgœj¨T¬[Ð*?Ð*?Ñ@Ô@ÐNÀJÐNr   útuple[LiteralString, ...]c                óˆ   — | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         d	k    rd
S dS )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@  sd   € ð Œ;˜#ÒÐØ'Ð'ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=Øˆrr   c                ór   — |                       t          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§|¢|°DÔ4FÈÑ'NÔ'NÑOÔOÐOr   ú
str | Nonec                ó4  — d}| j         D ]N}t          j                             | j        j        d|› �¦  «        }| j                             |d¦  «        }|r nŒO|rt          j                             |¦  «        snt          j                             | j        j        | j	        d›¦  «        }| j                             |d¦  «        }|r t          j                             |d¦  «        }|rt          j                             |¦  «        sr| j         D ]j}|d| 
                    d¦  «        …         }d	|› �}t          j                             | j        |¦  «        }t          j                             |¦  «        r|}Œk|rt          j                             |¦  «        sU| j         D ]M}d
|› �}t          j                             | j        |¦  «        }t          j                             |¦  «        r|}ŒN|s%t          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Ô2°I¸°I°IÑ>Ô>ˆCØ”W—^’^ CÐ)=Ñ>Ô>ˆFØð Ø�ðàð 	>�RœWŸ]š]¨6Ñ2Ô2ð 	>å”7—<’< ¤Ô 5¸$¼+Ð7LÐ7LÑMÔMˆDØœ7Ÿ>š>¨$°Ñ=Ô=ˆLØð >ÝœŸš l°HÑ=Ô=�Øð 	�RœWŸ]š]¨6Ñ2Ô2ð 	àÔ-ð ð �ØÐ-˜sŸyšy¨™~œ~Ð-Ô.�Ø?°vÐ?Ð?�Ý”G—L’L Ô!2°DÑ9Ô9�Ý”7—=’= Ñ#Ô#ð Ø�FøØð 	�RœWŸ]š]¨6Ñ2Ô2ð 	àÔ-ð ð �Ø8°3Ð8Ð8�Ý”G—L’L Ô!2°DÑ9Ô9�Ý”7—=’= Ñ#Ô#ð Ø�FøØð 	Då”W—\’\ $Ô"3°]ÑCÔCˆFØˆr   c                ó
  — | j         dk    rd}d}nAd}| j         dk    rdnd}| j                             d|¬¦  «                             d	d
¦  «        }d|› d|› �}g }| j         dk    r9| j        D ]1}|t
          j                             | j        j	        ||¦  «        gz  }Œ2| j
        D ]5}|t
          j                             | j        j        d|› d�|¦  «        gz  }Œ6|D ]#}| j                             |d¦  «        }|r|c S Œ$dS )zy
        Microsoft Windows SDK executable directory.

        Return
        ------
        str
            path
        rÜ   é#   r   é(   rÝ   TF)r   r8   r6   Ú-zWinSDK-NetFxÚToolsrÎ   rè   ÚAré   N)rˆ   rJ   r9   r!   ÚNetFxSdkVersionrQ   rR   rS   r„   rf   rà   rc   r~   )	r#   Únetfxverr"   r8   ÚfxÚregpathsr§   rR   Úexecpaths	            r   ÚWindowsSDKExecutablePathz#SystemInfo.WindowsSDKExecutablePath�  sK  € ð Œ;˜$ÒÐØˆHØˆDˆDàˆHØ"œk¨TÒ1Ð1�d�d°uˆGØ”7×&Ò&¨4¸Ð&ÑAÔA×IÒIÈ$ÐPSÑTÔTˆDØ1˜HÐ1Ð1¨4Ð1Ð1ˆð ˆØŒ;˜$ÒÐØÔ+ð Gð G�Ø�RœWŸ\š\¨$¬'Ô*;¸SÀ"ÑEÔEÐFÑF��àÔ)ð 	Lð 	LˆCØ�œŸš d¤gÔ&9¸:¸s¸:¸:¸:ÀrÑJÔJÐKÑKˆHˆHð ð 	 ð 	 ˆDØ”w—~’~ dÐ,@ÑAÔAˆHØð  Ø���ð ð ˆtr   c                ó¢   — t           j                             | j        j        | j        d›d�¦  «        }| j                             |d¦  «        p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²  sG   € õ Œw�|Š|˜DœGÔ0°d´kÐ2QÐ2QÐ2QÐ2QÑRÔRˆØŒw�~Š~˜d LÑ1Ô1Ð7°RÐ7r   c                óŽ   — | j         dk    rdnd}|D ]2}| j                             | j        j        d|› �¦  «        }|r|pdc S Œ3dS )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¿  sq   € ð  $œ{¨dÒ2Ð2ˆ|ˆ|¸ˆð ð 	$ð 	$ˆCØ”W—^’^ D¤GÔ$>Ð@PÈ3Ð@PÐ@PÑQÔQˆFØð $Ø�| Ð#Ð#Ð#ð$ð ˆtr   c                ór   — |                       t          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§|¢|°DÔ4KÈUÑ'SÔ'SÑTÔTÐTr   c                ó    — | j         dk    rdn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ÐWàð	
r   c                ó°   — d}| j         D ]K}t          j                             | j        j        |¦  «        }| j                             |d¦  «        }|r nŒL|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ñ  sb   € ð ˆØÔ'ð 	ð 	ˆCÝ”'—,’,˜tœwÔ0°#Ñ6Ô6ˆCØ”W—^’^ CÐ)AÑBÔBˆFØð Ø�ðàˆr   c                óš   — t           j                             | j        d¦  «        }| j                             | j        j        d¦  «        p|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  s>   € õ ”7—<’< ¤Ð-GÑHÔHˆð Œw�~Š~˜dœgœjÐ*:Ñ;Ô;ÐG¸xÐGr   c                óš   — t           j                             | j        d¦  «        }| j                             | j        j        d¦  «        p|S )zw
        Microsoft .NET Framework 64bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\Framework64Úframeworkdir64r  r  s     r   ÚFrameworkDir64zSystemInfo.FrameworkDir64  s>   € õ ”7—<’< ¤Ð-IÑJÔJˆð Œw�~Š~˜dœgœjÐ*:Ñ;Ô;ÐG¸xÐGr   útuple[str, ...]c                ó,   — |                       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                ó,   — |                       d¦  «        S )zƒ
        Microsoft .NET Framework 64bit versions.

        Return
        ------
        tuple of str
            versions
        é@   r  r)   s    r   ÚFrameworkVersion64zSystemInfo.FrameworkVersion64/  r  r   c                ód  — | j                              | j         j        d|› �¦  «        }t          | d|› �¦  «        }|p|                      |d¦  «        pd}| j        dk    r|dfS | j        dk    r&|                     ¦   «         dd	…         d
k    rdn|dfS | j        dk    rdS | j        dk    rdS dS )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×   € ð ”'—.’. ¤¤Ð-B¸DÐ-BÐ-BÑCÔCˆÝ˜dÐ$9°4Ð$9Ð$9Ñ:Ô:ˆØÐH˜×0Ò0°¸cÑBÔBÐHÀbˆð Œ;˜$ÒÐØ˜�;ÐØŒ[˜DÒ Ð Ø#&§9¢9¡;¤;¨r°¨r¤?°dÒ#:Ð#:�<�<ÀÀVÐKÐKØŒ[˜CÒÐØ'Ð'ØŒ[˜CÒÐØ'Ð'Øˆrr   c                ó†   ‡ ‡— ˆ ˆfd„t          t          j        ‰ ¦  «        ¦  «        D ¦   «         }t          |d¦  «        p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  — | ]X}t           j                             t           j                             ‰|¦  «        ¦  «        ¯?|                     ‰¦  «        ¯T|V — ŒYd S rI   )rQ   rR   rÊ   rS   Ú
startswith)Ú.0Údir_namerR   Úprefixs     €€r   ú	<genexpr>z0SystemInfo._use_last_dir_name.<locals>.<genexpr>j  ss   øè è € ð 
ð 
àÝŒw�}Š}�RœWŸ\š\¨$°Ñ9Ô9Ñ:Ô:ð
ð ×#Ò# FÑ+Ô+ð	
Øð
ð 
ð 
ð 
ð 
ð 
r   Nr   )ÚreversedrQ   r¯   Únext)rR   r/  Úmatching_dirss   `` r   rã   zSystemInfo._use_last_dir_nameY  sZ   øø€ ð"
ð 
ð 
ð 
ð 
å$¥R¤Z°Ñ%5Ô%5Ñ6Ô6ð
ñ 
ô 
ˆõ �M 4Ñ(Ô(Ð.¨BÐ.r   rI   r@   )r   r¨   )r   rØ   ©r   ræ   )r   r  )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Ô2€LØ!�g”kÐ"5°|ÑDÔD€OðSð Sð Sð Sð Sð#ð #ð #ð(ð ð ð>(ð (ð (ð (ðT ð7ð 7ñ „\ð7ð  ðLð Lñ „XðLð" ðð ñ „Xðð"ð ð ð<Oð Oð Oð, ðð ð ñ „Xðð* ð	Pð 	Pñ „Xð	Pð ð(ð (ð (ñ „Xð(ðT ð"ð "ñ „Xð"ðH ð
8ð 
8ñ „Xð
8ð ðð ñ „Xðð( ð	Uð 	Uñ „Xð	Uð ð
ð 
ñ „Xð
ð  ðð ñ „Xðð" ðHð Hñ „XðHð ðHð Hñ „XðHð ð	/ð 	/ð 	/ñ „Xð	/ð ð	/ð 	/ð 	/ñ „Xð	/ðð ð ð ð< ð/ð /ð /ñ „\ð/ð /ð /r   r€   c                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )	Ú_EnvironmentDictr3   Úincluderâ   ÚlibpathrR   zNotRequired[str | None]Úpy_vcruntime_redistN)r   r   r   Ú__annotations__r   r   r   r7  r7  s  sB   € € € € € € Ø€L€L�LØ€H€H�HØ€L€L�LØ€I€I�IØ0Ð0Ð0Ñ0Ð0Ð0r   r7  c                  óD  — 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 dS ),Ú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.
    Nr   r   r   c                óì   — t          |¦  «        | _        t          | j        ¦  «        | _        t	          | j        |¦  «        | _        | j        |k     r!d}t          j         	                    |¦  «        ‚d S )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__“  sf   € Ý˜tÑ$Ô$ˆŒÝ˜tœwÑ'Ô'ˆŒÝ˜Tœ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Œ~Ðr   c                ó   — | j         j        S )zp
        Microsoft Visual C++ version.

        Return
        ------
        float
            version
        )r?  r‰   r)   s    r   r‰   zEnvironmentInfo.vc_ver¨  rC  r   c                ó    ‡ — ddg}‰ j         dk    r1‰ j                             dd¬¦  «        }|dgz  }|dgz  }|d|› �gz  }ˆ fd„|D ¦   «         S )	zu
        Microsoft Visual Studio Tools.

        Return
        ------
        list of str
            paths
        zCommon7\IDEzCommon7\ToolsrÎ   T©r8   r   z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance Toolsc                ód   •— g | ],}t           j                             ‰j        j        |¦  «        ‘Œ-S r   ©rQ   rR   rS   r?  rÆ   ©r-  rR   r#   s     €r   ú
<listcomp>z+EnvironmentInfo.VSTools.<locals>.<listcomp>Æ  ó.   ø€ ÐKÐKÐK¸T•”—’˜TœWÔ1°4Ñ8Ô8ÐKÐKÐKr   )rˆ   rJ   r9   )r#   ÚpathsÚarch_subdirs   `  r   ÚVSToolszEnvironmentInfo.VSTools´  sƒ   ø€ ð  Ð!1Ð2ˆàŒ;˜$ÒÐØœ'×-Ò-°dÀÐ-ÑEÔEˆKØÐJÐKÑKˆEØÐ5Ð6Ñ6ˆEØÐC°kÐCÐCÐDÑDˆEàKÐKÐKÐKÀUÐKÑKÔKÐKr   c                óª   — t           j                             | j        j        d¦  «        t           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È  s?   € õ ŒG�LŠL˜œÔ-¨yÑ9Ô9ÝŒG�LŠL˜œÔ-Ð/@ÑAÔAð
ð 	
r   c                óà   ‡ — ‰ j         dk    r‰ j                             d¬¦  «        }n‰ j                             d¬¦  «        }d|› �d|› �g}‰ j         dk    r	|d|› �gz  }ˆ fd	„|D ¦   «         S )
z“
        Microsoft Visual C++ & Microsoft Foundation Class Libraries.

        Return
        ------
        list of str
            paths
        ç      .@T©r   ©r8   ÚLibz
ATLMFC\LibrÎ   z	Lib\storec                ód   •— g | ],}t           j                             ‰j        j        |¦  «        ‘Œ-S r   rQ  rI  s     €r   rJ  z/EnvironmentInfo.VCLibraries.<locals>.<listcomp>ê  rK  r   )rˆ   rJ   r;   )r#   rM  rL  s   `  r   ÚVCLibrarieszEnvironmentInfo.VCLibraries×  sœ   ø€ ð Œ;˜$ÒÐØœ'×,Ò,°Ð,Ñ6Ô6ˆKˆKàœ'×,Ò,°TÐ,Ñ:Ô:ˆKØ$�{Ð$Ð$Ð&A°KÐ&AÐ&AÐBˆàŒ;˜$ÒÐØÐ0 ;Ð0Ð0Ð1Ñ1ˆEàKÐKÐKÐKÀUÐKÑKÔKÐKr   c                ór   — | j         dk     rg S t          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ì  s5   € ð Œ;˜ÒÐØˆIÝ”—’˜TœWÔ1Ð3JÑKÔKÐLÐLr   c                ó  — | j         }t          j                             |j        d¦  «        g}| j        dk    rdnd}| j                             |¦  «        }|r,|t          j                             |j        d|› �¦  «        gz  }| j        dk    rId| j                             d¬¦  «        › �}|t          j                             |j        |¦  «        gz  }�n/| j        dk    rû| j        j	         
                    d	d
¦  «                             ¦   «         }t          j                             dd|› d�¦  «        }|t          j                             |j        || j                             d¬¦  «        z  ¦  «        gz  }| j        j	        | j        j        k    rE|t          j                             |j        || j                             d¬¦  «        z  ¦  «        gz  }n)|t          j                             |j        d¦  «        gz  }|S )aÛ  
        Microsoft Visual C++ Tools.

        Return
        ------
        list of str
            paths

        When host CPU is ARM, the tools should be found for ARM.

        >>> getfixture('windows_only')
        >>> mp = getfixture('monkeypatch')
        >>> mp.setattr(PlatformInfo, 'current_cpu', 'arm64')
        >>> ei = EnvironmentInfo(arch='irrelevant')
        >>> paths = ei.VCTools
        >>> any('HostARM64' in path for path in paths)
        True
        Ú
VCPackagesrÛ   TFÚBinrÎ   rV  rT  r   r   ÚbinÚHostz%srU  )r?  rQ   rR   rS   rÌ   rˆ   rJ   r?   r9   r1   r!   Úupperr;   r*   )r#   r?  Útoolsr=   rM  rR   Úhost_idÚhost_dirs           r   ÚVCToolszEnvironmentInfo.VCToolsú  sÞ  € ð( ŒWˆÝ”—’˜bœo¨|Ñ<Ô<Ð=ˆàœ;¨$Ò.Ð.�4�4°EˆØ”g×'Ò'¨Ñ1Ô1ˆØð 	JØ•b”g—l’l 2¤?Ð4G¸+Ð4GÐ4GÑHÔHÐIÑIˆEàŒ;˜$ÒÐØ<˜œ×,Ò,°TÐ,Ñ:Ô:Ð<Ð<ˆDØ•b”g—l’l 2¤?°DÑ9Ô9Ð:Ñ:ˆE‰EàŒ[˜DÒ Ð Ø”gÔ)×1Ò1°'¸5ÑAÔA×GÒGÑIÔIˆGÝ”w—|’| EÐ+=°'Ð+=Ð+=Ð+=Ñ>Ô>ˆHØÝ”—’˜Rœ_¨h¸¼×9KÒ9KÐPTÐ9KÑ9UÔ9UÑ.UÑVÔVðñ ˆEð ŒwÔ" d¤gÔ&8Ò8Ð8ØÝ”G—L’LØœ¨°D´G×4GÒ4GÈDÐ4GÑ4QÔ4QÑ)Qñô ðñ �øð •b”g—l’l 2¤?°EÑ:Ô:Ð;Ñ;ˆEàˆr   c                ó�  — | j         dk    rJ| j                             dd¬¦  «        }t          j                             | j        j        d|› �¦  «        gS | j                             d¬¦  «        }t          j                             | j        j        d¦  «        }| j        }t          j                             ||› d|› �¦  «        gS )zw
        Microsoft Windows SDK Libraries.

        Return
        ------
        list of str
            paths
        rÛ   TrF  rW  rU  râ   Úum)	rˆ   rJ   r;   rQ   rR   rS   r?  rä   Ú_sdk_subdir)r#   rM  râ   Úlibvers       r   ÚOSLibrarieszEnvironmentInfo.OSLibraries-  sµ   € ð Œ;˜$ÒÐØœ'×,Ò,°T¸tÐ,ÑDÔDˆKÝ”G—L’L ¤Ô!6Ð8K¸kÐ8KÐ8KÑLÔLÐMÐMð œ'×,Ò,°Ð,Ñ6Ô6ˆKÝ”'—,’,˜tœwÔ4°eÑ<Ô<ˆCØÔ%ˆFÝ”G—L’L ¨Ð&@Ð&@°;Ð&@Ð&@ÑAÔAÐBÐBr   c                óª  — t           j                             | j        j        d¦  «        }| j        dk    r"|t           j                             |d¦  «        gS | j        dk    r| j        }nd}t           j                             ||› d�¦  «        t           j                             ||› d�¦  «        t           j                             ||› d�¦  «        gS )	zu
        Microsoft Windows SDK Include.

        Return
        ------
        list of str
            paths
        r8  rÛ   ÚglrÎ   r   Úsharedrg  Úwinrt)rQ   rR   rS   r?  rä   rˆ   rh  )r#   r8  Úsdkvers      r   Ú
OSIncludeszEnvironmentInfo.OSIncludesA  s¿   € õ ”'—,’,˜tœwÔ4°iÑ@Ô@ˆàŒ;˜$ÒÐØ�RœWŸ\š\¨'°4Ñ8Ô8Ð9Ð9ð Œ{˜dÒ"Ð"ØÔ)��à�å”—’˜W¨Ð&7Ð&7Ð&7Ñ8Ô8Ý”—’˜W¨ m m mÑ4Ô4Ý”—’˜W¨Ð&6Ð&6Ð&6Ñ7Ô7ðð r   c                ó„  — t           j                             | j        j        d¦  «        }g }| j        dk    r
|| j        z  }| j        dk    r$|t           j                             |d¦  «        gz  }| j        dk    rÄ||t           j                             | j        j        d¦  «        t           j                             |dd¦  «        t           j                             |d	d¦  «        t           j                             |d
d¦  «        t           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ˆ   rj  )r#   Úrefr9  s      r   Ú	OSLibpathzEnvironmentInfo.OSLibpath[  s$  € õ Œg�lŠl˜4œ7Ô0°,Ñ?Ô?ˆØˆàŒ;˜#ÒÐØ�tÔ'Ñ'ˆGàŒ;˜$ÒÐØ�œŸš SÐ*HÑIÔIÐJÑJˆGàŒ;˜$ÒÐØØÝ”—’˜TœWÔ2°OÑDÔDÝ”—’˜SÐ"KÈYÑWÔWÝ”—’˜SÐ"IÈ9ÑUÔUÝ”—’ØÐGÈñô õ ”—’Ø”GÔ)Ø#Ø&Ø”{Ð)Ð)Ø Ø)Øñô ðñ ˆGð$ ˆr   c                óD   — t          |                      ¦   «         ¦  «        S )zs
        Microsoft Windows SDK Tools.

        Return
        ------
        list of str
            paths
        )ÚlistÚ
_sdk_toolsr)   s    r   ÚSdkToolszEnvironmentInfo.SdkToolsƒ  s   € õ �D—O’OÑ%Ô%Ñ&Ô&Ð&r   c              #  ó‚  K  — | j         dk     r;| j         dk    rdnd}t          j                             | j        j        |¦  «        V — | j                             ¦   «         sL| j                             d¬¦  «        }d|› �}t          j                             | j        j        |¦  «        V — | j         dv rj| j         	                    ¦   «         rd}n| j                             dd¬	¦  «        }d
|› �}t          j                             | j        j        |¦  «        V — n‚| j         dk    rwt          j                             | j        j        d¦  «        }| j                             d¬¦  «        }| j        j
        }t          j                             ||› |› �¦  «        V — | j        j        r| j        j        V — dS dS )zˆ
        Microsoft Windows SDK Tools paths generator.

        Return
        ------
        generator of str
            paths
        rT  rÜ   r^  zBin\x86TrU  )rÛ   rÜ   r   rF  zBin\NETFX 4.0 ToolsN)rˆ   rQ   rR   rS   r?  rä   rJ   r2   r9   r.   rå   rý   )r#   Úbin_dirrM  rR   ro  s        r   r{  zEnvironmentInfo._sdk_tools�  s»  è è € ð Œ;˜ÒÐØ#œ{¨dÒ2Ð2�e�e¸
ˆGÝ”'—,’,˜tœwÔ4°gÑ>Ô>Ð>Ð>Ð>àŒw×%Ò%Ñ'Ô'ð 	<Øœ'×-Ò-°$Ð-Ñ7Ô7ˆKØ&˜Ð&Ð&ˆDÝ”'—,’,˜tœwÔ4°dÑ;Ô;Ð;Ð;Ð;àŒ;˜,Ð&Ð&ØŒw×$Ò$Ñ&Ô&ð JØ ��à"œg×1Ò1¸$ÀDÐ1ÑIÔI�Ø7¨+Ð7Ð7ˆDÝ”'—,’,˜tœwÔ4°dÑ;Ô;Ð;Ð;Ð;Ð;àŒ[˜DÒ Ð Ý”7—<’< ¤Ô 5°uÑ=Ô=ˆDØœ'×-Ò-°$Ð-Ñ7Ô7ˆKØ”WÔ2ˆFÝ”'—,’,˜t¨Ð%=°Ð%=Ð%=Ñ>Ô>Ð>Ð>Ð>àŒ7Ô+ð 	3Ø”'Ô2Ð2Ð2Ð2Ð2Ð2ð	3ð 	3r   c                ó,   — | j         j        }|r|› d�ndS )zu
        Microsoft Windows SDK version subdir.

        Return
        ------
        str
            subdir
        r6   r   )r?  rå   ©r#   Úucrtvers     r   rh  zEnvironmentInfo._sdk_subdir²  s#   € ð ”'Ô/ˆØ#*Ð2�7����°Ð2r   c                ór   — | j         dk    rg S t          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¿  s4   € ð Œ;˜ÒÐØˆIå”—’˜TœWÔ2°GÑ<Ô<Ð=Ð=r   c                ót  ‡— | j         }| j        Š| j        dk    r-d}|                     ¦   «          o|                     ¦   «          }n>|                     ¦   «         p|                     ¦   «         }|j        dk    p
|j        dk    }g }|r|ˆfd„‰j        D ¦   «         z  }|r|ˆfd„‰j        D ¦   «         z  }|S )zv
        Microsoft .NET Framework Tools.

        Return
        ------
        list of str
            paths
        rÛ   Tr   c                óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S r   )rQ   rR   rS   r  ©r-  r§   r?  s     €r   rJ  z+EnvironmentInfo.FxTools.<locals>.<listcomp>ä  ó9   ø€ ð ð ð Ø9<•”—’˜RÔ.°Ñ4Ô4ðð ð r   c                óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S r   )rQ   rR   rS   r  r‡  s     €r   rJ  z+EnvironmentInfo.FxTools.<locals>.<listcomp>è  rˆ  r   )	rJ   r?  rˆ   r.   r2   r1   r*   r  r  )r#   rJ   Ú	include32Ú	include64rb  r?  s        @r   ÚFxToolszEnvironmentInfo.FxToolsÎ  s  ø€ ð ŒWˆØŒWˆàŒ;˜$ÒÐØˆIØ×,Ò,Ñ.Ô.Ð.ÐJ°r×7HÒ7HÑ7JÔ7JÐ3JˆIˆIà×(Ò(Ñ*Ô*ÐA¨b×.?Ò.?Ñ.AÔ.AˆIØœ¨'Ò1ÐM°R´]ÀgÒ5MˆIàˆØð 	Øð ð ð ð Ø@BÔ@Uðñ ô ñ ˆEð ð 	Øð ð ð ð Ø@BÔ@Uðñ ô ñ ˆEð ˆr   c                óÆ   — | j         dk     s| j        j        sg S | j                             d¬¦  «        }t
          j                             | j        j        d|› �¦  «        gS )z~
        Microsoft .Net Framework SDK Libraries.

        Return
        ------
        list of str
            paths
        rÎ   TrU  zlib\um)rˆ   r?  r  rJ   r;   rQ   rR   rS   )r#   rM  s     r   ÚNetFxSDKLibrariesz!EnvironmentInfo.NetFxSDKLibrariesí  s_   € ð Œ;˜ÒÐ T¤WÔ%8ÐØˆIà”g×(Ò(¨TÐ(Ñ2Ô2ˆÝ”—’˜TœWÔ0Ð2I¸KÐ2IÐ2IÑJÔJÐKÐKr   c                óŠ   — | j         dk     s| j        j        sg S t          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ý  s>   € ð Œ;˜ÒÐ T¤WÔ%8ÐØˆIå”—’˜TœWÔ0°-Ñ@Ô@ÐAÐAr   c                óX   — t           j                             | j        j        d¦  «        gS )z„
        Microsoft Visual Studio Team System Database.

        Return
        ------
        list of str
            paths
        zVSTSDB\DeployrH  r)   s    r   ÚVsTDbzEnvironmentInfo.VsTDb  s#   € õ ”—’˜TœWÔ1Ð3CÑDÔDÐEÐEr   c                ó`  — | j         dk     rg S | j         dk     r(| j        j        }| j                             d¬¦  «        }n| j        j        }d}d| j         d›d|› �}t          j                             ||¦  «        g}| j         dk    r%|t          j                             ||d	¦  «        gz  }|S )
zn
        Microsoft Build Engine.

        Return
        ------
        list of str
            paths
        rÝ   rT  TrV  r   zMSBuild\rÃ   z\binÚRoslyn)	rˆ   r?  rÄ   rJ   r9   rÆ   rQ   rR   rS   )r#   Ú	base_pathrM  rR   Úbuilds        r   ÚMSBuildzEnvironmentInfo.MSBuild  s¹   € ð Œ;˜ÒÐØˆIØŒ[˜4ÒÐØœÔ/ˆIØœ'×-Ò-°dÐ-Ñ;Ô;ˆKˆKàœÔ,ˆIØˆKà>˜4œ;Ð>Ð>Ð>°Ð>Ð>ˆÝ”—’˜i¨Ñ.Ô.Ð/ˆàŒ;˜$ÒÐà•b”g—l’l 9¨d°HÑ=Ô=Ð>Ñ>ˆEàˆr   c                ór   — | j         dk     rg S t          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.HTMLHelpWorkshop4  s5   € ð Œ;˜ÒÐØˆIå”—’˜TœWÔ4Ð6JÑKÔKÐLÐLr   c                ó   — | j         dk     rg S | j                             d¬¦  «        }t          j                             | j        j        d¦  «        }| j        }t          j                             ||› d|› �¦  «        gS )zƒ
        Microsoft Universal C Runtime SDK Libraries.

        Return
        ------
        list of str
            paths
        rÎ   TrU  râ   Úucrt)	rˆ   rJ   r;   rQ   rR   rS   r?  r  Ú_ucrt_subdir)r#   rM  râ   r�  s       r   ÚUCRTLibrarieszEnvironmentInfo.UCRTLibrariesC  sw   € ð Œ;˜ÒÐØˆIà”g×(Ò(¨TÐ(Ñ2Ô2ˆÝŒg�lŠl˜4œ7Ô5°uÑ=Ô=ˆØÔ#ˆÝ”—’˜S WÐ"?Ð"?°+Ð"?Ð"?Ñ@Ô@ÐAÐAr   c                óÂ   — | j         dk     rg S t          j                             | j        j        d¦  «        }t          j                             || j        › d�¦  «        gS )z�
        Microsoft Universal C Runtime SDK Include.

        Return
        ------
        list of str
            paths
        rÎ   r8  r›  )rˆ   rQ   rR   rS   r?  r  rœ  )r#   r8  s     r   ÚUCRTIncludeszEnvironmentInfo.UCRTIncludesU  sU   € ð Œ;˜ÒÐØˆIå”'—,’,˜tœwÔ9¸9ÑEÔEˆÝ”—’˜W¨Ô):Ð&@Ð&@Ð&@ÑAÔAÐBÐBr   c                ó,   — | j         j        }|r|› d�ndS )z�
        Microsoft Universal C Runtime SDK version subdir.

        Return
        ------
        str
            subdir
        r6   r   )r?  r  r€  s     r   rœ  zEnvironmentInfo._ucrt_subdire  s#   € ð ”'Ô4ˆØ#*Ð2�7����°Ð2r   c                óJ   — d| j         cxk    rdk    rn n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.FSharpr  s;   € ð �$”+Ð$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$Ð$ØˆIà”Ô(Ð)Ð)r   ræ   c                ó*  ‡‡— d| j         › d�Š| j                             d¬¦  «                             d¦  «        Šg }| j        j        }t          j                             | 	                    dd¦  «        ¦  «        }t          j         
                    |¦  «        r]t          j                             |t          j        |¦  «        d         ¦  «        }||t          j                             |d	¦  «        gz  }|t          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.dllTrU  r6   z\Toolsz\RedistrŒ   ÚonecoreÚredistzMicrosoft.VCé
   z.CRTc              3  ób   •K  — | ])\  }}t           j                             |‰|‰¦  «        V — Œ*d S rI   )rQ   rR   rS   )r-  r/  Úcrt_dirrM  r¤  s      €€r   r0  z2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>ž  sO   øè è € ð 
ð 
á!�˜õ ŒG�LŠL˜ ¨g°yÑAÔAð
ð 
ð 
ð 
ð 
ð 
r   N)r‰   rJ   r;   Ústripr?  rÌ   rQ   rR   Údirnamer!   rÊ   rS   r¯   Úintrˆ   r—   r˜   r2  ÚfilterÚisfile)r#   ÚprefixesÚ
tools_pathÚredist_pathÚcrt_dirsÚcandidate_pathsrM  r¤  s         @@r   ÚVCRuntimeRedistzEnvironmentInfo.VCRuntimeRedist�  s~  øø€ ð 3 ¤Ð2Ð2Ð2ˆ	Ø”g×(Ò(¨TÐ(Ñ2Ô2×8Ò8¸Ñ>Ô>ˆð ˆØ”WÔ)ˆ
Ý”g—o’o j×&8Ò&8¸ÀJÑ&OÔ&OÑPÔPˆÝŒ7�=Š=˜Ñ%Ô%ð 	Låœ'Ÿ,š, {µB´J¸{Ñ4KÔ4KÈBÔ4OÑPÔPˆKØ˜¥b¤g§l¢l°;À	Ñ&JÔ&JÐKÑKˆHà•R”W—\’\ *¨hÑ7Ô7Ð8Ñ8ˆð 2˜4œ;¨Ñ+Ð1Ð1Ð1à6�3˜tœ{Ñ+Ô+¨bÑ0Ð6Ð6Ð6ð
ˆð
ð 
ð 
ð 
ð 
å%.Ô%6°xÀÑ%JÔ%Jð
ñ 
ô 
ˆõ •F�2œ7œ>¨?Ñ;Ô;¸TÑBÔBÐBr   TÚexistsÚboolr7  c                ó  — t          |                      d| j        | j        | j        | j        g|¦  «        |                      d| j        | j        | j        | j	        | j
        g|¦  «        |                      d| j        | j        | j        | j        g|¦  «        |                      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
        r8  râ   r9  rR   )r8  râ   r9  rR   é   r:  )r7  Ú_build_pathsrR  rp  rŸ  r�  rY  rj  rŒ  r�  rŽ  r[  rx  re  rN  r’  r|  r„  r—  r™  r¢  rˆ   r´  )r#   rµ  Úenvs      r   Ú
return_envzEnvironmentInfo.return_env¤  s9  € õ Ø×%Ò%Øà”OØ”OØÔ%ØÔ)ð	ð ñ	ô 	ð ×!Ò!ØàÔ$ØÔ$Ø”LØÔ&ØÔ*ðð ñ
ô 
ð ×%Ò%ØØÔ! 4¤<°Ô1AÀ4Ä>ÐRØñô ð
 ×"Ò"Øà”LØ”LØ”JØ”MØ”MØ”LØ”LØÔ)Ø”Kð
ð ñô ð7*
ñ *
ô *
ˆðV Œ;˜"ÒÐ Ô!5ÐØ)-Ô)=ˆCÐ%Ñ&Øˆ
r   c                óú  — t           j                             |¦  «        }t          j        |d¦  «                             t          j        ¦  «        }t          j        ||¦  «        }|r,t          t          t          j
        j        |¦  «        ¦  «        n|}|s6|                     ¦   «         › d�}t          j                             |¦  «        ‚t!          |¦  «        }	t          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   Úpathseprz  r­  rR   rÊ   ra  rŽ   r�   r�   r   rS   )
r#   rw   Úspec_path_listsrµ  Ú
spec_pathsÚ	env_pathsrL  Úextant_pathsrË   Úunique_pathss
             r   r¹  zEnvironmentInfo._build_pathsá  sÆ   € õ. ”_×2Ò2°?ÑCÔCˆ
Ý”K  bÑ)Ô)×/Ò/µ´
Ñ;Ô;ˆ	Ý” 
¨IÑ6Ô6ˆØ=CÐN•t�F¥2¤7¤=°%Ñ8Ô8Ñ9Ô9Ð9ÈˆØð 	?Ø—Z’Z‘\”\ÐAÐAÐAˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>Ý& |Ñ4Ô4ˆÝŒz�Š˜|Ñ,Ô,Ð,r   )Nr   r@   r4  )T)rµ  r¶  r   r7  )!r   r   r   rC   r$   rE   rˆ   r‰   rN  rR  rY  r[  re  rj  rp  rx  r|  r{  rh  r„  rŒ  rŽ  r�  r’  r—  r™  r�  rŸ  rœ  r¢  r´  r»  r¹  r   r   r   r=  r=  {  s"  € € € € € ðð ð.?ð ?ð ?ð ?ð ?ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ðLð Lñ „XðLð& ð
ð 
ñ „Xð
ð ðLð Lñ „XðLð( ðMð Mñ „XðMð ð0ð 0ñ „Xð0ðd ðCð Cñ „XðCð& ðð ñ „Xðð2 ð%ð %ñ „Xð%ðN ð	'ð 	'ñ „Xð	'ð!3ð !3ð !3ðF ð
3ð 
3ñ „Xð
3ð ð>ð >ñ „Xð>ð ðð ñ „Xðð< ðLð Lñ „XðLð ðBð Bñ „XðBð ð	Fð 	Fñ „Xð	Fð ðð ñ „Xðð6 ðMð Mñ „XðMð ðBð Bñ „XðBð" ðCð Cñ „XðCð ð
3ð 
3ñ „Xð
3ð ð*ð *ñ „Xð*ð ð Cð  Cð  Cñ „Xð CðD;ð ;ð ;ð ;ð ;ðz-ð -ð -ð -ð -r   r=  )rC   Ú
__future__r   r›   r—   r±   rQ   Úos.pathÚplatformÚtypingr   r   Úmore_itertoolsr   Údistutils.errorsrŽ   Útyping_extensionsr   r   Úsystemr   r
   Údictr;  r   rG   r€   r7  r=  r   r   r   ú<module>rÎ     s0  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð àð =Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð ð %˜˜œÑ*Ô*¨iÒ7Ð7Ø€M€M€MØÐÐÐÐÐÐð!ð !ð !ð !ð !ñ !ô !ð !ð #˜d™fœf€GÐ$Ð$Ð$Ñ$ðv
ð v
ð v
ð v
ð v
ñ v
ô v
ð v
ðrzð zð zð zð zñ zô zð zðzQ/ð Q/ð Q/ð Q/ð Q/ñ Q/ô Q/ð Q/ðh1ð 1ð 1ð 1ð 1�yñ 1ô 1ð 1ðE
-ð E
-ð E
-ð E
-ð E
-ñ E
-ô E
-ð E
-ð E
-ð E
-r   