+
    Ž°³js§  ã                  óˆ  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHtHt ^ RIHt ^RIHt ^RIHt ^ RIt]'       d	   ^ RIHtHt ]'       g"   ]	P2                  ! 4       R8X  d   ^ RIt^ R	IHt M ! R
 R4      t/ tR]R&    ! R R4      t ! R R4      t ! R R4      t ! R R]4      t  ! R R4      t!R# )zo
Environment info about Microsoft Compilers.

>>> getfixture('windows_only')
>>> ei = EnvironmentInfo('amd64')
)ÚannotationsN)ÚTYPE_CHECKINGÚ	TypedDictÚoverload)Úunique_everseen)ÚStrPath)Úpy310)ÚLiteralStringÚNotRequiredÚWindows)Úenvironc                  ó&   € ] tR t^#tRtRtRtRtRtR# )ÚwinregN© )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOTÚ__static_attributes__r   ó    ÚP/home/luca/screen-checking/.venv/lib/python3.14/site-packages/setuptools/msvc.pyr   r   #   s   † Øˆ
Ø ÐØ!ÐØ Ôr   r   zdict[str, str]r   c                  óÆ   € ] tR t^,tRt]P                  ! RR4      P                  4       tR R lt	]
R R l4       tR R	 ltR
 R ltRR R lltRR R lltRR R lltRtR# )ÚPlatformInfozi
Current and Target Architectures information.

Parameters
----------
arch: str
    Target architecture.
Úprocessor_architectureÚ c               ó    € V ^8„  d   QhRRRR/# )é   ÚarchÚstrÚreturnÚNoner   )Úformats   "r   Ú__annotate__ÚPlatformInfo.__annotate__8   s   € ÷ 9ñ 9˜Sð 9 Tñ 9r   c                	óP   € VP                  4       P                  R R4      V n        R# )Úx64Úamd64N)ÚlowerÚreplacer!   )Úselfr!   s   &&r   Ú__init__ÚPlatformInfo.__init__8   s   € Ø—J‘J“L×(Ñ(¨°Ó8ˆŽ	r   c               ó   € V ^8„  d   QhRR/# ©r    r#   r"   r   )r%   s   "r   r&   r'   <   s   € ÷ 	4ñ 	4˜Cñ 	4r   c                ó`   € V P                   V P                   P                  R4      ^,           R # )zC
Return Target CPU architecture.

Return
------
str
    Target CPU
Ú_N)r!   Úfind©r-   s   &r   Ú
target_cpuÚPlatformInfo.target_cpu;   s(   € ð �y‰y˜Ÿ™Ÿ™¨Ó,¨qÕ0Ð2Ð3Ð3r   c               ó   € V ^8„  d   QhRR/# ©r    r#   Úboolr   )r%   s   "r   r&   r'   G   s   € ÷ 	(ñ 	(˜tñ 	(r   c                ó    € V P                   R8H  # )zW
Return True if target CPU is x86 32 bits..

Return
------
bool
    CPU is x86 32 bits
Úx86©r6   r5   s   &r   Útarget_is_x86ÚPlatformInfo.target_is_x86G   s   € ð �‰ %Ñ'Ð'r   c               ó   € V ^8„  d   QhRR/# r9   r   )r%   s   "r   r&   r'   R   s   € ÷ 	)ñ 	) ñ 	)r   c                ó    € V P                   R8H  # )zX
Return True if current CPU is x86 32 bits..

Return
------
bool
    CPU is x86 32 bits
r<   ©Úcurrent_cpur5   s   &r   Úcurrent_is_x86ÚPlatformInfo.current_is_x86R   s   € ð ×Ñ 5Ñ(Ð(r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r'   ]   s   € ÷ 
ñ 
°sñ 
r   c                óŒ   € V P                   R8X  d   V'       d   R# V P                   R8X  d   V'       d   R# RV P                    2# )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)
r<   r   r*   ú\x64Ú\rB   ©r-   Úhidex86r)   s   &&&r   Úcurrent_dirÚPlatformInfo.current_dir]   sR   € ð$ × Ñ  EÔ)¯gð ð	
ð × Ñ  GÔ+·ð ð	
ð
 �d×&Ñ&Ð'Ð(ð	
r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r'   u   s   € ÷ 
ñ 
°cñ 
r   c                óŒ   € V P                   R8X  d   V'       d   R# V P                   R8X  d   V'       d   R# RV P                    2# )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)
r<   r   r*   rH   rI   r=   rJ   s   &&&r   Ú
target_dirÚPlatformInfo.target_diru   sL   € ð$ —‘ 5Ô(¯Wð ð	
ð —‘ 7Ô*¯sð ð	
ð
 �d—o‘oÐ&Ð'ð	
r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r'   �   s   € ÷ 
ñ 
¨3ñ 
r   c                óœ   € V'       d   RMV P                   pV P                  V8X  d   R# V P                  4       P                  RRV R24      # )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.
r<   r   rI   r3   )rC   r6   rP   r,   )r-   Úforcex86Úcurrents   && r   Ú	cross_dirÚPlatformInfo.cross_dir�   sQ   € ÷  $‘%¨×)9Ñ)9ˆð �‰ 'Ô)ð ð	
ð —‘Ó"×*Ñ*¨4°2°g°Y¸a°ÓAð	
r   )r!   N)FF©F)r   r   r   r   Ú__doc__r   Úgetr+   rC   r.   Úpropertyr6   r>   rD   rL   rP   rV   r   r   r   r   r   r   ,   sZ   † ñð —+’+Ð6¸Ó;×AÑAÓC€Kõ9ð ô	4ó ð	4õ	(õ	)÷
÷0
÷0
ó 
r   r   c                  ó˜  € ] tR t^¥tRt]P                  ]P                  ]P                  ]P                  3t
R R lt]R R l4       t]R R l4       t]R R	 l4       t]R
 R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R R ll4       t]R R R ll4       tR R R lltR R ltRtR# )!ÚRegistryInfoz‡
Microsoft Visual Studio related registry information.

Parameters
----------
platform_info: PlatformInfo
    "PlatformInfo" instance.
c               ó    € V ^8„  d   QhRRRR/# )r    Úplatform_infor   r#   r$   r   )r%   s   "r   r&   ÚRegistryInfo.__annotate__¶   s   € ÷  ñ   lð  °tñ  r   c                	ó   € Wn         R # ©N©Úpi)r-   r_   s   &&r   r.   ÚRegistryInfo.__init__¶   s   € ØŽr   c               ó   € V ^8„  d   QhRR/# ©r    r#   r	   r   )r%   s   "r   r&   r`   º   s   € ÷ 	ñ 	˜mñ 	r   c                ó   € R# )zP
Microsoft Visual Studio root registry key.

Return
------
str
    Registry key
ÚVisualStudior   r5   s   &r   ÚvisualstudioÚRegistryInfo.visualstudio¹   s   € ñ r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`   Æ   s   € ÷ 	6ñ 	6�]ñ 	6r   c                óV   € \         P                  P                  V P                  R4      # )zO
Microsoft Visual Studio SxS registry key.

Return
------
str
    Registry key
ÚSxS)ÚosÚpathÚjoinrj   r5   s   &r   ÚsxsÚRegistryInfo.sxsÅ   s   € ô �w‰w�|‰|˜D×-Ñ-¨uÓ5Ð5r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`   Ò   ó   € ÷ 	-ñ 	-�Mñ 	-r   c                óV   € \         P                  P                  V P                  R4      # )zL
Microsoft Visual C++ VC7 registry key.

Return
------
str
    Registry key
ÚVC7©ro   rp   rq   rr   r5   s   &r   ÚvcÚRegistryInfo.vcÑ   ó   € ô �w‰w�|‰|˜DŸH™H eÓ,Ð,r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`   Þ   ru   r   c                óV   € \         P                  P                  V P                  R4      # )zO
Microsoft Visual Studio VS7 registry key.

Return
------
str
    Registry key
ÚVS7rx   r5   s   &r   ÚvsÚRegistryInfo.vsÝ   r{   r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`   ê   s   € ÷ 	%ñ 	%˜}ñ 	%r   c                ó   € R# )zS
Microsoft Visual C++ for Python registry key.

Return
------
str
    Registry key
zDevDiv\VCForPythonr   r5   s   &r   Úvc_for_pythonÚRegistryInfo.vc_for_pythoné   s   € ñ %r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`   ö   s   € ÷ 	 ñ 	 ˜}ñ 	 r   c                ó   € R# )zA
Microsoft SDK registry key.

Return
------
str
    Registry key
zMicrosoft SDKsr   r5   s   &r   Úmicrosoft_sdkÚRegistryInfo.microsoft_sdkõ   s   € ñ  r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`     s   € ÷ 	;ñ 	;˜]ñ 	;r   c                óV   € \         P                  P                  V P                  R4      # )zR
Microsoft Windows/Platform SDK registry key.

Return
------
str
    Registry key
r   ©ro   rp   rq   r‡   r5   s   &r   Úwindows_sdkÚRegistryInfo.windows_sdk  s   € ô �w‰w�|‰|˜D×.Ñ.°	Ó:Ð:r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`     s   € ÷ 	<ñ 	<˜=ñ 	<r   c                óV   € \         P                  P                  V P                  R4      # )zP
Microsoft .NET Framework SDK registry key.

Return
------
str
    Registry key
ÚNETFXSDKr‹   r5   s   &r   Ú	netfx_sdkÚRegistryInfo.netfx_sdk  s   € ô �w‰w�|‰|˜D×.Ñ.°
Ó;Ð;r   c               ó   € V ^8„  d   QhRR/# rg   r   )r%   s   "r   r&   r`     s   € ÷ 	/ñ 	/ Mñ 	/r   c                ó   € R# )zP
Microsoft Windows Kits Roots registry key.

Return
------
str
    Registry key
zWindows Kits\Installed Rootsr   r5   s   &r   Úwindows_kits_rootsÚRegistryInfo.windows_kits_roots  s   € ñ /r   c               ó$   € V ^8„  d   QhRRRRRR/# )r    Úkeyr	   r<   r:   r#   r   )r%   s   "r   r&   r`   &  s   € ×TÑT˜]ÐT°ÐTÀ-ÑTr   c                	ó   € R # rb   r   ©r-   r˜   r<   s   &&&r   Ú	microsoftÚRegistryInfo.microsoft%  s   € ÙQTr   c               ó$   € V ^8„  d   QhRRRRRR/# ©r    r˜   r"   r<   r:   r#   r   )r%   s   "r   r&   r`   (  s   € ×@Ñ@˜SÐ@ tÐ@¸Ñ@r   c                	ó   € R # rb   r   rš   s   &&&r   r›   rœ   '  s   € Ù=@r   c               ó$   € V ^8„  d   QhRRRRRR/# rž   r   )r%   s   "r   r&   r`   )  s&   € ÷ Bñ B˜Sð B tð B¸ñ Br   c                óž   € V P                   P                  4       '       g	   V'       d   RMRp\        P                  P	                  RVRV4      # )z½
Return key in Microsoft software registry.

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

Return
------
str
    Registry key
r   ÚWow6432NodeÚSoftwareÚ	Microsoft)rd   rD   ro   rp   rq   )r-   r˜   r<   Únode64s   &&& r   r›   rœ   )  s8   € ð  —w‘w×-Ñ-×/Ò/·3‘¸MˆÜ�w‰w�|‰|˜J¨°¸SÓAÐAr   c               ó$   € V ^8„  d   QhRRRRRR/# )r    r˜   r"   Únamer#   ú
str | Noner   )r%   s   "r   r&   r`   <  s!   € ÷ 'ñ '˜#ð ' Sð '¨Zñ 'r   c           	     óV  € \         P                  p\         P                  p\         P                  pV P                  pV P
                   FG  pRp V! Wv! V4      ^ V4      p \         P                  ! Y‚4      ^ ,          T'       d   T! T4       u # u # 	  R#   \         dL    T P                  P                  4       '       g(    T! Yv! TR4      ^ T4      p Lv  \         d      K›  i ; i K¢  i ; i  \         d     Mi ; i T'       d   T! T4       KÊ  KÌ    T'       d
   T! T4       i i ; i)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 | None
    value
NT)
r   ÚKEY_READÚOpenKeyÚCloseKeyr›   ÚHKEYSÚOSErrorrd   rD   ÚQueryValueEx)	r-   r˜   r§   Úkey_readÚopenkeyÚclosekeyÚmsÚhkeyÚbkeys	   &&&      r   ÚlookupÚRegistryInfo.lookup<  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ñ ø—4Ù˜T•Nð úsT   ÁBÁ C/Â*C,ÃCÃC%Ã C,Ã$C%Ã%C,Ã+C,Ã/C=Ã:DÃ<C=Ã=DÄD(rc   NrX   )r   r   r   r   rY   r   r   r   r   r   r­   r.   r[   rj   rr   ry   r   rƒ   r‡   rŒ   r‘   r•   r   r›   r¶   r   r   r   r   r]   r]   ¥   s  † ñð 	×ÑØ× Ñ Ø×!Ñ!Ø× Ñ ð	€Eõ ð ô	ó ð	ð ô	6ó ð	6ð ô	-ó ð	-ð ô	-ó ð	-ð ô	%ó ð	%ð ô	 ó ð	 ð ô	;ó ð	;ð ô	<ó ð	<ð ô	/ó ð	/ð ÞTó ØTØÞ@ó Ø@÷B÷&'ñ 'r   r]   c                  óF  € ] tR tRtRt]P                  ! RR4      t]P                  ! RR4      t]P                  ! R]4      t	R5R R	 llt
R
 tR R ltR R lt]R 4       t]R R l4       t]R R l4       tR tR t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R  R! l4       t]R" R# l4       t]R$ R% l4       t]R& R' l4       t]R( R) l4       t]R* R+ l4       t]R, R- l4       t ]R. R/ l4       t!R0 R1 lt"]R6R2 R3 ll4       t#R4t$R# )7Ú
SystemInfoif  zÊ
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               ó$   € V ^8„  d   QhRRRRRR/# )r    Úregistry_infor]   Úvc_verzfloat | Noner#   r$   r   )r%   s   "r   r&   ÚSystemInfo.__annotate__x  s)   € ÷ 	Sñ 	SØ)ð	SØ3?ð	Sà	ñ	Sr   c                	ó¾   € Wn         V P                   P                  V n        V P                  4       V n        T;'       g    V P	                  4       ;V n        V n        R # rb   )Úrird   Úfind_programdata_vs_versÚknown_vs_pathsÚ_find_latest_available_vs_verÚvs_verr¾   )r-   r½   r¾   s   &&&r   r.   ÚSystemInfo.__init__x  sJ   € ð  ŒØ—'‘'—*‘*ˆŒà"×;Ñ;Ó=ˆÔð %+×$RÐ$R¨d×.PÑ.PÓ.RÐRˆŒ�d–kr   c                óö   € V P                  4       pV'       g2   V P                  '       g    \        P                  P	                  R4      h\        V4      pVP                  V P                  4       \        V4      # )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Úmax)r-   Úreg_vc_versÚvc_verss   &  r   rÄ   Ú(SystemInfo._find_latest_available_vs_verƒ  sd   € ð ×+Ñ+Ó-ˆç˜t×2×2Ð2Ü×"Ñ"×9Ñ9Ø7óð ô �kÓ"ˆØ�‰�t×*Ñ*Ô+Ü�7‹|Ðr   c               ó   € V ^8„  d   QhRR/# )r    r#   zlist[float]r   )r%   s   "r   r&   r¿   —  s   € ÷ ñ  +ñ r   c                ód  € V P                   P                  pV P                   P                  V P                   P                  V P                   P                  3p. p\
        P                  ! V P                   P                  V4       EFL  w  rE \        P                  ! WA! V4      ^ \        P                  4      pT;_uu_ 4        \        P                  ! T4      w  rxp	\        T4       Fk  p
\        P                  ! \         4      ;_uu_ 4        \#        \        P$                  ! Yj4      ^ ,          4      pY³9  d   TP'                  T4       RRR4       Km  	  \        T4       Fd  p
\        P                  ! \         4      ;_uu_ 4        \#        \        P(                  ! Yj4      4      pY³9  d   TP'                  T4       RRR4       Kf  	  RRR4       EKO  	  \+        V4      #   \         d     EKk  i ; i  + '       g   i     EK  ; i  + '       g   i     K¹  ; i  + '       g   i     EKª  ; i)zh
Find Microsoft Visual Studio versions available in registry.

Return
------
list of float
    Versions
N)rÁ   r›   ry   rƒ   r   Ú	itertoolsÚproductr­   r   r«   rª   r®   ÚQueryInfoKeyÚrangeÚ
contextlibÚsuppressÚ
ValueErrorÚfloatÚ	EnumValueÚappendÚEnumKeyÚsorted)r-   r³   ÚvckeysÚvs_versr´   r˜   rµ   ÚsubkeysÚvaluesr3   ÚiÚvers   &           r   rÈ   ÚSystemInfo.find_reg_vs_vers—  s‡  € ð �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Õ8Ü#¤F×$4Ò$4°TÓ$=¸aÕ$@ÓA˜ØÔ-Ø#ŸN™N¨3Ô/÷ 9Ñ8ñ 'ô
 ˜wž�AÜ#×,Ò,¬Z×8Õ8Ü#¤F§N¢N°4Ó$;Ó<˜ØÔ-Ø#ŸN™N¨3Ô/÷ 9Ñ8ñ (÷ ’ñ Bô" �g‹Ðøô ô Ûðú÷
 9×8Ñ8ú÷
 9×8Ð8ú÷ —‘úsO   Â,G!ÃA
HÄ>G4Å
<HÆ7H	Æ=HÇ!G1Ç0G1Ç4HÇ?
HÈ	HÈ	HÈH/c               ó   € V ^8„  d   QhRR/# )r    r#   zdict[float, str]r   )r%   s   "r   r&   r¿   ¶  s   € ÷ (ñ (Ð*:ñ (r   c                ó$  € / pRp \         P                  ! V4      pT F°  p \         P                  P	                  Y$R4      p\        TRRR7      ;_uu_ 4       p\        P                  ! T4      pRRR4       XR,          p\         P                  ! \         P                  P	                  TR4      4       TYP                  TR	,          4      &   K²  	  T#   \         d    Tu # i ; i  + '       g   i     L€; i  \        \        3 d     Kð  i ; i)
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)
ro   Úlistdirr®   rp   rq   ÚopenÚjsonÚloadÚ_as_float_versionÚKeyError)	r-   Úvs_versionsÚinstances_dirÚhashed_namesr§   Ú
state_pathÚ
state_fileÚstateÚvs_paths	   &        r   rÂ   Ú#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 ¢6C:ÁC'Á/AC:ÃC$Ã#C$Ã'C7Ã2C:Ã:DÄDc                ób   € \        RP                  V P                  R4      R,          4      4      # )z—
Return a string version as a simplified float version (major.minor)

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

Return
------
float
    version
Ú.ºNr    N)rÛ   rq   Úsplit)Úversions   &r   rò   ÚSystemInfo._as_float_versionà  s&   € ô �S—X‘X˜gŸm™m¨CÓ0°Õ4Ó5Ó6Ð6r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿   ò  s   € ÷ Lñ L˜cñ Lr   c                óþ   € \         P                  P                  V P                  RV P                  R 24      pV P
                  P                  V P
                  P                  V P                  R 4      ;'       g    T# )z@
Microsoft Visual Studio directory.

Return
------
str
    path
úMicrosoft Visual Studio ú0.1f)ro   rp   rq   ÚProgramFilesx86rÅ   rÁ   r¶   r   )r-   Údefaults   & r   ÚVSInstallDirÚSystemInfo.VSInstallDirñ  s`   € ô —'‘'—,‘,Ø× Ñ Ð$<¸T¿[¹[ÈÐ<NÐ"Oó
ˆð
 �w‰w�~‰~˜dŸg™gŸj™j¨T¯[©[¸Ð,>Ó@×KÐKÀGÐKr   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿     s   € ÷ ñ ˜cñ r   c                óâ   € V P                  4       ;'       g    V P                  4       p\        P                  P	                  V4      '       g"   Rp\
        P                  P                  V4      hV# )z=
Microsoft Visual C++ directory.

Return
------
str
    path
z(Microsoft Visual C++ directory not found)Ú	_guess_vcÚ_guess_vc_legacyro   rp   ÚisdirrÉ   rÊ   rË   )r-   rp   Úmsgs   &  r   ÚVCInstallDirÚSystemInfo.VCInstallDir  sU   € ð �~‰~Ó×:Ð: 4×#8Ñ#8Ó#:ˆä�w‰w�}‰}˜T×"Ò"Ø<ˆCÜ×"Ñ"×9Ñ9¸#Ó>Ð>àˆr   c                ó´  € V P                   R8:  d   R#  V P                  V P                   ,          p\        P
                  P                  VR4      p \        P                  ! V4      R,          pV P                  V4      V n	        \        P
                  P                  W#4      #   \         d    T P                  p LŒi ; i  \        \        3 d     R# i ; i)z<
Locate Visual C++ for VS2017+.

Return
------
str
    path
ç      ,@r   rì   éÿÿÿÿ)rÅ   rÃ   ró   r  ro   rp   rq   rî   rò   r¾   r®   Ú
IndexError)r-   Úvs_dirÚguess_vcr¾   s   &   r   r  Ú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C Â%B?Â>B?ÃCÃCc                ó  € \         P                  P                  V P                  RV P                  R R24      p\         P                  P                  V P
                  P                  V P                  R 4      pV P
                  P                  VR4      pV'       d!   \         P                  P                  VR4      MTpV P
                  P                  V P
                  P                  V P                  R 4      ;'       g    T# )zK
Locate Visual C++ for versions prior to 2017.

Return
------
str
    path
r  r  z\VCÚ
installdirÚVC)	ro   rp   rq   r  rÅ   rÁ   rƒ   r¶   ry   )r-   r  Úreg_pathÚ	python_vcÚ
default_vcs   &    r   r  ÚSystemInfo._guess_vc_legacy3  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ÐNÀJÐNr   c               ó   € V ^8„  d   QhRR/# ©r    r#   ztuple[LiteralString, ...]r   )r%   s   "r   r&   r¿   J  s   € ÷ ñ Ð#<ñ r   c                óÄ   € V P                   R8:  d   R# V P                   R8X  d   R# V P                   R8X  d   R# V P                   R8X  d   R	# V P                   R8¼  d   R
# R# )zg
Microsoft Windows SDK versions for specified MSVC++ version.

Return
------
tuple of str
    versions
ç      "@ç      $@ç      &@ç      (@r  )z7.0z6.1z6.0a)z7.1z7.0a)z8.0z8.0a)ú8.1z8.1a)z10.0r'  r   ©rÅ   r5   s   &r   ÚWindowsSdkVersionÚSystemInfo.WindowsSdkVersionI  sc   € ð �;‰;˜#ÔØ'Ð'Ø�[‰[˜DÔ Ø Ð Ø�[‰[˜DÔ Ø Ð Ø�[‰[˜DÔ Ø Ð Ø�[‰[˜DÔ Ø Ð Øˆ	r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿   `  s   € ÷ 	Pñ 	P sñ 	Pr   c                ót   € V P                  \        P                  P                  V P                  R4      4      # )zD
Microsoft Windows SDK last version.

Return
------
str
    version
Úlib)Ú_use_last_dir_namero   rp   rq   ÚWindowsSdkDirr5   s   &r   ÚWindowsSdkLastVersionÚ SystemInfo.WindowsSdkLastVersion_  s*   € ð ×&Ñ&¤r§w¡w§|¡|°D×4FÑ4FÈÓ'NÓOÐOr   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿   l  s   € ÷ (ñ (˜sñ (r   c                ó8  € RpV P                    F`  p\        P                  P                  V P                  P
                  RV 24      pV P                  P                  VR4      pV'       g   K`   M	  V'       d&   \        P                  P                  V4      '       g…   \        P                  P                  V P                  P                  V P                  R 4      pV P                  P                  VR4      pV'       d!   \        P                  P                  VR4      pV'       d&   \        P                  P                  V4      '       g€   V P                    Fo  pVRVP                  R4       pR	V 2p\        P                  P                  V P                  V4      p\        P                  P                  V4      '       g   Km  TpKq  	  V'       d&   \        P                  P                  V4      '       gl   V P                    F[  pR
V 2p\        P                  P                  V P                  V4      p\        P                  P                  V4      '       g   KY  TpK]  	  V'       g+   \        P                  P                  V P                  R4      pV# )z>
Microsoft Windows SDK directory.

Return
------
str
    path
r   ÚvÚinstallationfolderr  r  ÚWinSDKNrý   zMicrosoft SDKs\Windows Kits\zMicrosoft SDKs\Windows\vÚPlatformSDK)r)  ro   rp   rq   rÁ   rŒ   r¶   r  rƒ   r¾   Úrfindr»   r  )r-   Úsdkdirrå   Úlocrp   Úinstall_baseÚintverÚds   &       r   r/  ÚSystemInfo.WindowsSdkDirk  sÄ  € ð  ˆØ×)Ô)ˆ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Øˆr   c               ó   € V ^8„  d   QhRR/# ©r    r#   r¨   r   )r%   s   "r   r&   r¿   —  s   € ÷ "ñ "¨*ñ "r   c                óŒ  € V P                   R8:  d   ^#pRpM>^(pV P                   R8*  pV P                  P                  RVR7      P                  RR4      pRV R	V 2p. pV P                   R
8¼  dP   V P                   F?  pV\
        P                  P                  V P                  P                  Wd4      .,          pKA  	  V P                   FD  pV\
        P                  P                  V P                  P                  RV R2V4      .,          pKF  	  V F+  pV P                  P                  VR4      pV'       g   K)  Vu # 	  R# )zP
Microsoft Windows SDK executable directory.

Return
------
str | None
    path
r%  r   r&  T)r)   rK   rI   Ú-zWinSDK-NetFxÚToolsr  r4  ÚAr5  N)rÅ   rd   rL   r,   ÚNetFxSdkVersionro   rp   rq   rÁ   r‘   r)  rŒ   r¶   )	r-   Únetfxverr!   rK   ÚfxÚregpathsrå   rp   Úexecpaths	   &        r   ÚWindowsSDKExecutablePathÚ#SystemInfo.WindowsSDKExecutablePath–  s!  € ð �;‰;˜$ÔØˆHØ‰DàˆHØ—k‘k TÑ)ˆ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Ø’ñ ñ
 r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿   ¼  s   € ÷ 
8ñ 
8 #ñ 
8r   c                óÒ   € \         P                  P                  V P                  P                  V P
                  R R24      pV P                  P                  VR4      ;'       g    R# )z<
Microsoft Visual F# directory.

Return
------
str
    path
r  z	\Setup\F#Ú
productdirr   )ro   rp   rq   rÁ   rj   rÅ   r¶   )r-   rp   s   & r   ÚFSharpInstallDirÚSystemInfo.FSharpInstallDir»  sM   € ô �w‰w�|‰|˜DŸG™G×0Ñ0°d·k±kÀ$Ð5GÀyÐ2QÓRˆØ�w‰w�~‰~˜d LÓ1×7Ð7°RÐ7r   c               ó   € V ^8„  d   QhRR/# r@  r   )r%   s   "r   r&   r¿   É  s   € ÷ ñ  Jñ r   c                óÀ   € V P                   R8¼  d   RMRpV FB  pV P                  P                  V P                  P                  RV 24      pV'       g   K@  Vu # 	  R# )zK
Microsoft Universal CRT SDK directory.

Return
------
str | None
    path
r  ÚkitsrootN)Ú10Ú81r   )rÅ   rÁ   r¶   r•   )r-   Úversrå   r9  s   &   r   ÚUniversalCRTSdkDirÚSystemInfo.UniversalCRTSdkDirÈ  sV   € ð  $Ÿ{™{¨dÔ2‰|¸ˆó ˆCØ—W‘W—^‘^ D§G¡G×$>Ñ$>À(È3È%Ð@PÓQˆFß‰vØ’ñ ñ
 r   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿   Þ  s   € ÷ ñ ¨Cñ r   c                óÌ   €  V P                  \        P                  P                  V P                  R4      4      #   \
         d   p\        P                  ! TR4       h Rp?ii ; i)zP
Microsoft Universal C Runtime SDK last version.

Return
------
str
    version
r-  úCannot find UniversalCRTSdkDirN)r.  ro   rp   rq   rW  Ú	TypeErrorr   Úadd_note)r-   Úexs   & r   ÚUniversalCRTSdkLastVersionÚ%SystemInfo.UniversalCRTSdkLastVersionÝ  sP   € ð	Ø×*Ñ*¬2¯7©7¯<©<¸×8OÑ8OÐQVÓ+WÓXÐXøÜô 	Ü�NŠN˜2Ð?Ô@Øûð	ús   ‚8; »A#ÁAÁA#c               ó   € V ^8„  d   QhRR/# r!  r   )r%   s   "r   r&   r¿   î  s   € ÷ 
ñ 
Ð!:ñ 
r   c                ó,   € V P                   R8¼  d   R# R# )zQ
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(  r5   s   &r   rE  ÚSystemInfo.NetFxSdkVersioní  s%   € ð �{‰{˜dÔ"ð Xð	
ð ð	
r   c               ó   € V ^8„  d   QhRR/# r@  r   )r%   s   "r   r&   r¿   ÿ  s   € ÷ ñ ˜Zñ r   c                óæ   € RpV P                    F^  p\        P                  P                  V P                  P
                  V4      pV P                  P                  VR4      pV'       g   K]   V# 	  V# )zL
Microsoft .NET Framework SDK directory.

Return
------
str | None
    path
r   Úkitsinstallationfolder)rE  ro   rp   rq   rÁ   r‘   r¶   )r-   r9  rå   r:  s   &   r   ÚNetFxSdkDirÚSystemInfo.NetFxSdkDirþ  s`   € ð  ˆØ×'Ô'ˆCÜ—'‘'—,‘,˜tŸw™w×0Ñ0°#Ó6ˆCØ—W‘W—^‘^ CÐ)AÓBˆFß‰vØØˆñ (ð
 ˆr   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿     ó   € ÷ Hñ H ñ Hr   c                óÊ   € \         P                  P                  V P                  R4      pV P                  P                  V P                  P                  R4      ;'       g    T# )zG
Microsoft .NET Framework 32bit directory.

Return
------
str
    path
zMicrosoft.NET\FrameworkÚframeworkdir32©ro   rp   rq   rº   rÁ   r¶   ry   ©r-   Úguess_fws   & r   ÚFrameworkDir32ÚSystemInfo.FrameworkDir32  sE   € ô —7‘7—<‘< §¡Ð-GÓHˆð �w‰w�~‰~˜dŸg™gŸj™jÐ*:Ó;×GÐG¸xÐGr   c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r¿   !  rj  r   c                óÊ   € \         P                  P                  V P                  R4      pV P                  P                  V P                  P                  R4      ;'       g    T# )zG
Microsoft .NET Framework 64bit directory.

Return
------
str
    path
zMicrosoft.NET\Framework64Úframeworkdir64rm  rn  s   & r   ÚFrameworkDir64ÚSystemInfo.FrameworkDir64   sE   € ô —7‘7—<‘< §¡Ð-IÓJˆð �w‰w�~‰~˜dŸg™gŸj™jÐ*:Ó;×GÐG¸xÐGr   c               ó   € V ^8„  d   QhRR/# ©r    r#   ztuple[str, ...]r   )r%   s   "r   r&   r¿   1  ó   € ÷ 	/ñ 	/ Oñ 	/r   c                ó$   € V P                  ^ 4      # )zS
Microsoft .NET Framework 32bit versions.

Return
------
tuple of str
    versions
©Ú_find_dot_net_versionsr5   s   &r   ÚFrameworkVersion32ÚSystemInfo.FrameworkVersion320  ó   € ð ×*Ñ*¨2Ó.Ð.r   c               ó   € V ^8„  d   QhRR/# rx  r   )r%   s   "r   r&   r¿   =  ry  r   c                ó$   € V P                  ^@4      # )zS
Microsoft .NET Framework 64bit versions.

Return
------
tuple of str
    versions
r{  r5   s   &r   ÚFrameworkVersion64ÚSystemInfo.FrameworkVersion64<  r  r   c               ó   € V ^8„  d   QhRR/# rx  r   )r%   s   "r   r&   r¿   H  s   € ÷ ñ ¨oñ r   c                ó²  € V P                   P                  V P                   P                  RV 24      p\        V RV 24      pT;'       g    V P	                  VR4      ;'       g    RpV P
                  R8¼  d   VR3# V P
                  R8¼  d#   VP                  4       R,          R	8w  d   R# TR
3# V P
                  R8X  d   R# V P
                  R8X  d   R# R# )zš
Find Microsoft .NET Framework versions.

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

Return
------
tuple of str
    versions
ÚframeworkverÚFrameworkDirr4  r   r&  zv4.0r$  rþ   Úv4úv3.5r#  g       @)z
v4.0.30319r‰  )r‰  ú
v2.0.50727)zv3.0rŠ  r   )rÁ   r¶   ry   Úgetattrr.  rÅ   r+   )r-   ÚbitsÚreg_verÚdot_net_dirrå   s   &&   r   r|  Ú!SystemInfo._find_dot_net_versionsH  sË   € ð —'‘'—.‘. §¡§¡¨|¸D¸6Ð-BÓCˆÜ˜d l°4°&Ð$9Ó:ˆØ×HÐH˜×0Ñ0°¸cÓB×HÐHÀbˆð �;‰;˜$ÔØ˜�;ÐØ�[‰[˜DÔ Ø#&§9¡9£;¨r¥?°dÔ#:ÐKÐKÀÀVÐKÐKØ�[‰[˜CÔØ'Ð'Ø�[‰[˜CÔØ'Ð'Øˆ	r   c               ó$   € V ^8„  d   QhRRRRRR/# )r    rp   r   Úprefixr"   r#   r   )r%   s   "r   r&   r¿   g  s!   € ÷ 'ñ ' ð '°#ð '¸sñ 'r   c                ór   a a€ V V3R l\        \        P                  ! S 4      4       4       p\        VR4      # )zÍ
Return name of the last dir in path or '' if no dir found.

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

Return
------
str
    name
c              3  óä   <"  € T Fe  p\         P                  P                  \         P                  P                  SV4      4      '       g   KH  VP	                  S4      '       g   Ka  Vx € Kg  	  R # 5irb   )ro   rp   r  rq   Ú
startswith)Ú.0Údir_namerp   r‘  s   & €€r   Ú	<genexpr>Ú0SystemInfo._use_last_dir_name.<locals>.<genexpr>w  sN   øé € ð 
á6�Ü�w‰w�}‰}œRŸW™WŸ\™\¨$°Ó9×:ô ð ×#Ñ# F×+÷ ŠHÛ6ùs   ƒAA0ÁA0Á&
A0r   )Úreversedro   rî   Únext)rp   r‘  Úmatching_dirss   ff r   r.  ÚSystemInfo._use_last_dir_namef  s/   ù€ õ"
ä$¤R§Z¢Z°Ó%5Ô6ó
ˆô �M 2Ó&Ð&r   )rÃ   rd   rÁ   r¾   rÅ   rb   )r   )%r   r   r   r   rY   r   rZ   rº   r»   r  r.   rÄ   rÈ   rÂ   Ústaticmethodrò   r[   r  r  r  r  r)  r0  r/  rJ  rO  rW  r_  rE  rg  rp  ru  r}  r‚  r|  r.  r   r   r   r   r¹   r¹   f  s¾  † ñ	ð �[Š[˜ 2Ó&€FØ—;’;˜~¨rÓ2€LØ—k’kÐ"5°|ÓD€O÷	Sòõ(õ>(ðT ñ7ó ð7ð  ôLó ðLð" ôó ðò"ò<Oð, ôó ðð* ô	Pó ð	Pð ô(ó ð(ðT ô"ó ð"ðH ô
8ó ð
8ð ôó ðð( ôó ðð ô
ó ð
ð  ôó ðð" ôHó ðHð ôHó ðHð ô	/ó ð	/ð ô	/ó ð	/õð< ö'ó ô'r   r¹   c                  óJ   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R	tR
# )Ú_EnvironmentDicti€  r"   Úincluder-  Úlibpathrp   zNotRequired[str | None]Úpy_vcruntime_redistr   N)r   r   r   r   Ú__annotations__r   r   r   r   rŸ  rŸ  €  s   ‡ ØƒLØ	ƒHØƒLØ
ƒIØ0×0r   rŸ  c                  óä  € ] tR tRtRtR(R R llt]R 4       t]R 4       t]R 4       t	]R	 4       t
]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR t]R R l4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R R l4       t]R R l4       t]R R  l4       t]R! 4       t]R" R# l4       tR)R$ R% llt R& t!R't"R# )*Ú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               ó   € V ^8„  d   QhRR/# )r    r#   r$   r   )r%   s   "r   r&   ÚEnvironmentInfo.__annotate__   s   € ÷ ?ñ ?¸4ñ ?r   c                	óô   € \        V4      V n        \        V P                  4      V n        \	        V P                  V4      V n        V P                  V8  d"   R p\        P                  P                  V4      hR# )z.No suitable Microsoft Visual C++ version foundN)
r   rd   r]   rÁ   r¹   Úsir¾   rÉ   rÊ   rË   )r-   r!   r¾   Ú
vc_min_verÚerrs   &&&& r   r.   ÚEnvironmentInfo.__init__   s]   € Ü˜tÓ$ˆŒÜ˜tŸw™wÓ'ˆŒÜ˜TŸW™W fÓ-ˆŒà�;‰;˜Ô#ØBˆCÜ×"Ñ"×9Ñ9¸#Ó>Ð>ñ $r   c                ó.   € V P                   P                  # )z;
Microsoft Visual Studio.

Return
------
float
    version
)r©  rÅ   r5   s   &r   rÅ   ÚEnvironmentInfo.vs_ver©  ó   € ð �w‰w�~‰~Ðr   c                ó.   € V P                   P                  # )z@
Microsoft Visual C++ version.

Return
------
float
    version
)r©  r¾   r5   s   &r   r¾   ÚEnvironmentInfo.vc_verµ  r¯  r   c                ó:  € RR.pV P                   R8¼  d?   V P                  P                  RRR7      pVR.,          pVR.,          pVRV 2.,          pV Uu. uF7  p\        P                  P                  V P                  P                  V4      NK9  	  up# u upi )zE
Microsoft Visual Studio Tools.

Return
------
list of str
    paths
zCommon7\IDEzCommon7\Toolsr  T©rK   r)   z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance Tools)rÅ   rd   rL   ro   rp   rq   r©  r  )r-   ÚpathsÚarch_subdirrp   s   &   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                óÒ   € \         P                  P                  V P                  P                  R4      \         P                  P                  V P                  P                  R4      .# )zb
Microsoft Visual C++ & Microsoft Foundation Class Includes.

Return
------
list of str
    paths
ÚIncludezATLMFC\Include)ro   rp   rq   r©  r  r5   s   &r   Ú
VCIncludesÚEnvironmentInfo.VCIncludesÕ  sG   € ô �G‰G�L‰L˜Ÿ™×-Ñ-¨yÓ9Ü�G‰G�L‰L˜Ÿ™×-Ñ-Ð/@ÓAð
ð 	
r   c                óx  € V P                   R8¼  d   V P                  P                  RR7      pMV P                  P                  RR7      pRV 2RV 2.pV P                   R8¼  d   VRV 2.,          pV Uu. uF7  p\        P                  P                  V P                  P                  V4      NK9  	  up# u upi )	zc
Microsoft Visual C++ & Microsoft Foundation Class Libraries.

Return
------
list of str
    paths
ç      .@T©r)   ©rK   ÚLibz
ATLMFC\Libr  z	Lib\store)rÅ   rd   rP   ro   rp   rq   r©  r  )r-   rµ  r´  rp   s   &   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   Á7=B7c                ó’   € V P                   R8  d   . # \        P                  P                  V P                  P
                  R4      .# )zW
Microsoft Visual C++ store references Libraries.

Return
------
list of str
    paths
r  zLib\store\references)rÅ   ro   rp   rq   r©  r  r5   s   &r   ÚVCStoreRefsÚEnvironmentInfo.VCStoreRefsù  s8   € ð �;‰;˜ÔØˆIÜ—‘—‘˜TŸW™W×1Ñ1Ð3JÓKÐLÐLr   c           	     óì  € V P                   p\        P                  P                  VP                  R4      .pV P
                  R8*  pV P                  P                  V4      pV'       d6   V\        P                  P                  VP                  RV 24      .,          pV P
                  R8X  dT   RV P                  P                  RR7       2pV\        P                  P                  VP                  V4      .,          pV# V P
                  R8¼  Ed.   V P                  P                  P                  RR	4      P                  4       p\        P                  P                  R
RV R24      pV\        P                  P                  VP                  WpP                  P                  RR7      ,          4      .,          pV P                  P                  V P                  P                  8w  dS   V\        P                  P                  VP                  WpP                  P                  RR7      ,          4      .,          pV# V\        P                  P                  VP                  R4      .,          pV# )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$  ÚBinr  Tr¿  r½  r*   r)   ÚbinÚHostz%sr¾  )r©  ro   rp   rq   r  rÅ   rd   rV   rL   rC   r,   ÚupperrP   r6   )r-   r©  ÚtoolsrT   rµ  rp   Úhost_idÚhost_dirs   &       r   ÚVCToolsÚEnvironmentInfo.VCTools  sÚ  € ð( �W‰WˆÜ—‘—‘˜bŸo™o¨|Ó<Ð=ˆà—;‘; $Ñ&ˆØ—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àˆr   c                óÐ  € V P                   R8:  dV   V P                  P                  RRR7      p\        P                  P                  V P                  P                  RV 24      .# V P                  P                  RR7      p\        P                  P                  V P                  P                  R4      pV P                  p\        P                  P                  W# RV 24      .# )zG
Microsoft Windows SDK Libraries.

Return
------
list of str
    paths
r$  Tr³  rÀ  r¾  r-  Úum)	rÅ   rd   rP   ro   rp   rq   r©  r/  Ú_sdk_subdir)r-   rµ  r-  Ú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ÐBr   c                óÚ  € \         P                  P                  V P                  P                  R4      pV P
                  R8:  d#   V\         P                  P                  VR4      .# V P
                  R8¼  d   V P                  pMRp\         P                  P                  W R24      \         P                  P                  W R24      \         P                  P                  W R24      .# )	zE
Microsoft Windows SDK Include.

Return
------
list of str
    paths
r   r$  Úglr  r   ÚsharedrÒ  Úwinrt)ro   rp   rq   r©  r/  rÅ   rÓ  )r-   r   Úsdkvers   &  r   Ú
OSIncludesÚEnvironmentInfo.OSIncludesN  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                ó  € \         P                  P                  V P                  P                  R4      p. pV P
                  R8:  d   W P                  ,          pV P
                  R8¼  d)   V\         P                  P                  VR4      .,          pV P
                  R8¼  dâ   VV\         P                  P                  V P                  P                  R4      \         P                  P                  VRR4      \         P                  P                  VR	R4      \         P                  P                  VR
R4      \         P                  P                  V P                  P                  RRV P
                  R RRR4      .,          pV# )zM
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)ro   rp   rq   r©  r/  rÅ   rÕ  )r-   Úrefr¡  s   &  r   Ú	OSLibpathÚEnvironmentInfo.OSLibpathh  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ð$ ˆr   c                ó4   € \        V P                  4       4      # )zC
Microsoft Windows SDK Tools.

Return
------
list of str
    paths
)ÚlistÚ
_sdk_toolsr5   s   &r   ÚSdkToolsÚEnvironmentInfo.SdkTools�  s   € ô �D—O‘OÓ%Ó&Ð&r   c              #  ór  "  € V P                   R8  dL   V P                   R8:  d   RMRp\        P                  P                  V P                  P
                  V4      x € V P                  P                  4       '       gX   V P                  P                  RR7      pRV 2p\        P                  P                  V P                  P
                  V4      x € V P                   R9   d}   V P                  P                  4       '       d   RpMV P                  P                  RRR7      pR	V 2p\        P                  P                  V P                  P
                  V4      x € MœV P                   R8¼  dŒ   \        P                  P                  V P                  P
                  R4      pV P                  P                  RR7      pV P                  P                  p\        P                  P                  W4 V 24      x € V P                  P                  '       d   V P                  P                  x € R
# R
# 5i)zX
Microsoft Windows SDK Tools paths generator.

Return
------
generator of str
    paths
r½  r%  rÈ  zBin\x86Tr¾  r   r³  zBin\NETFX 4.0 ToolsN)r$  r%  )rÅ   ro   rp   rq   r©  r/  rd   rD   rL   r>   r0  rJ  )r-   Úbin_dirrµ  rp   rÛ  s   &    r   ré  Ú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   ‚A<H7Á?BH7ÄDH7ÈH7c               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r§  À  s   € ÷ 
3ñ 
3˜Sñ 
3r   c                óL   € V P                   P                  pV'       d   V R2# R# )zE
Microsoft Windows SDK version subdir.

Return
------
str
    subdir
rI   r   )r©  r0  ©r-   Úucrtvers   & r   rÓ  ÚEnvironmentInfo._sdk_subdir¿  s&   € ð —'‘'×/Ñ/ˆß#*�7�)˜2�Ð2°Ð2r   c                ó’   € V P                   R8”  d   . # \        P                  P                  V P                  P
                  R4      .# )zC
Microsoft Windows SDK Setup.

Return
------
list of str
    paths
r#  ÚSetup)rÅ   ro   rp   rq   r©  r/  r5   s   &r   ÚSdkSetupÚEnvironmentInfo.SdkSetupÌ  s7   € ð �;‰;˜ÔØˆIä—‘—‘˜TŸW™W×2Ñ2°GÓ<Ð=Ð=r   c                óÂ  € V P                   pV P                  pV P                  R8:  d6   RpVP                  4       '       * ;'       d    VP	                  4       '       * pMNVP                  4       ;'       g    VP	                  4       pVP
                  R8H  ;'       g    VP                  R8H  p. pV'       dL   TVP                   Uu. uF-  p\        P                  P                  VP                  V4      NK/  	  up,          pV'       dL   TVP                   Uu. uF-  p\        P                  P                  VP                  V4      NK/  	  up,          pV# u upi u upi )zF
Microsoft .NET Framework Tools.

Return
------
list of str
    paths
r$  Tr*   )rd   r©  rÅ   r>   rD   rC   r6   r}  ro   rp   rq   rp  r‚  ru  )r-   rd   r©  Ú	include32Ú	include64rÌ  rå   s   &      r   ÚFxToolsÚEnvironmentInfo.FxToolsÛ  s"  € ð �W‰WˆØ�W‰Wˆà�;‰;˜$ÔØˆIØ×,Ñ,Ó.Ô.×JÐJ°r×7HÑ7HÓ7JÔ3J‰Ià×(Ñ(Ó*×AÐA¨b×.?Ñ.?Ó.AˆIØŸ™¨'Ñ1×MÐM°R·]±]ÀgÑ5MˆIàˆßØØ@B×@UÒ@UóÙ@U¸”—‘—‘˜R×.Ñ.°Ö4Ñ@Uñõ ˆE÷ ØØ@B×@UÒ@UóÙ@U¸”—‘—‘˜R×.Ñ.°Ö4Ñ@Uñõ ˆEð ˆùòùòs   Ã3EÄ3Ec                ó  € V P                   R8  g   V P                  P                  '       g   . # V P                  P	                  RR7      p\
        P                  P                  V P                  P                  RV 24      .# )zN
Microsoft .Net Framework SDK Libraries.

Return
------
list of str
    paths
r  Tr¾  zlib\um)rÅ   r©  rg  rd   rP   ro   rp   rq   )r-   rµ  s   & r   ÚNetFxSDKLibrariesÚ!EnvironmentInfo.NetFxSDKLibrariesú  sd   € ð �;‰;˜Ô T§W¡W×%8×%8Ð%8ØˆIà—g‘g×(Ñ(¨TÐ(Ó2ˆÜ—‘—‘˜TŸW™W×0Ñ0°V¸K¸=Ð2IÓJÐKÐKr   c                óÊ   € V P                   R8  g   V P                  P                  '       g   . # \        P                  P                  V P                  P                  R4      .# )zM
Microsoft .Net Framework SDK Includes.

Return
------
list of str
    paths
r  z
include\um)rÅ   r©  rg  ro   rp   rq   r5   s   &r   ÚNetFxSDKIncludesÚ EnvironmentInfo.NetFxSDKIncludes
  sF   € ð �;‰;˜Ô T§W¡W×%8×%8Ð%8ØˆIä—‘—‘˜TŸW™W×0Ñ0°-Ó@ÐAÐAr   c                ól   € \         P                  P                  V P                  P                  R4      .# )zT
Microsoft Visual Studio Team System Database.

Return
------
list of str
    paths
zVSTSDB\Deploy)ro   rp   rq   r©  r  r5   s   &r   ÚVsTDbÚEnvironmentInfo.VsTDb  s'   € ô —‘—‘˜TŸW™W×1Ñ1Ð3CÓDÐEÐEr   c                ó¼  € V P                   R8  d   . # V P                   R8  d4   V P                  P                  pV P                  P	                  RR7      pMV P                  P
                  pRpRV P                   R RV 2p\        P                  P                  W4      .pV P                   R8¼  d)   V\        P                  P                  WR	4      .,          pV# )
z>
Microsoft Build Engine.

Return
------
list of str
    paths
r&  r½  Tr¿  r   zMSBuild\r  z\binÚRoslyn)	rÅ   r©  r  rd   rL   r  ro   rp   rq   )r-   Ú	base_pathrµ  rp   Úbuilds   &    r   ÚMSBuildÚEnvironmentInfo.MSBuild%  s¶   € ð �;‰;˜ÔØˆIØ�[‰[˜4ÔØŸ™×/Ñ/ˆIØŸ'™'×-Ñ-°dÐ-Ó;‰KàŸ™×,Ñ,ˆIØˆKà˜4Ÿ;™; tÐ,¨D°°Ð>ˆÜ—‘—‘˜iÓ.Ð/ˆà�;‰;˜$Ôà”b—g‘g—l‘l 9°HÓ=Ð>Õ>ˆEàˆr   c                ó’   € V P                   R8  d   . # \        P                  P                  V P                  P
                  R4      .# )zD
Microsoft HTML Help Workshop.

Return
------
list of str
    paths
r%  zHTML Help Workshop)rÅ   ro   rp   rq   r©  r  r5   s   &r   ÚHTMLHelpWorkshopÚ EnvironmentInfo.HTMLHelpWorkshopA  s8   € ð �;‰;˜ÔØˆIä—‘—‘˜TŸW™W×4Ñ4Ð6JÓKÐLÐLr   c               ó   € V ^8„  d   QhRR/# ©r    r#   z	list[str]r   )r%   s   "r   r&   r§  Q  s   € ÷ Bñ B˜yñ Br   c                ó‚  € V P                   R8  d   . # V P                  P                  RR7      p \        P                  P                  V P                  P                  R4      pT P                  p\        P                  P                  Y$ RT 24      .#   \         d   p\        P                  ! TR4       h Rp?ii ; i)zS
Microsoft Universal C Runtime SDK Libraries.

Return
------
list of str
    paths
r  Tr¾  r-  r[  NÚucrt)rÅ   rd   rP   ro   rp   rq   r©  rW  r\  r   r]  Ú_ucrt_subdir)r-   rµ  r-  r^  rò  s   &    r   ÚUCRTLibrariesÚEnvironmentInfo.UCRTLibrariesP  s¡   € ð �;‰;˜ÔØˆIà—g‘g×(Ñ(¨TÐ(Ó2ˆð	Ü—'‘'—,‘,˜tŸw™w×9Ñ9¸5ÓAˆCð ×#Ñ#ˆÜ—‘—‘˜S I¨T°+°Ð"?Ó@ÐAÐAøô	 ô 	Ü�NŠN˜2Ð?Ô@Øûð	ús   ±4B ÂB>Â!B9Â9B>c               ó   € V ^8„  d   QhRR/# r  r   )r%   s   "r   r&   r§  g  s   € ÷ Cñ C˜iñ Cr   c                óB  € V P                   R8  d   . #  \        P                  P                  V P                  P
                  R4      p\        P                  P                  YP                   R24      .#   \         d   p\        P                  ! TR4       h Rp?ii ; i)zQ
Microsoft Universal C Runtime SDK Include.

Return
------
list of str
    paths
r  r   r[  Nr  )
rÅ   ro   rp   rq   r©  rW  r\  r   r]  r  )r-   r   r^  s   &  r   ÚUCRTIncludesÚEnvironmentInfo.UCRTIncludesf  s‚   € ð �;‰;˜ÔØˆIð	Ü—g‘g—l‘l 4§7¡7×#=Ñ#=¸yÓIˆGô —‘—‘˜W×):Ñ):Ð(;¸4Ð&@ÓAÐBÐBøô ô 	Ü�NŠN˜2Ð?Ô@Øûð	ús   •4A6 Á6BÂBÂBc               ó   € V ^8„  d   QhRR/# r1   r   )r%   s   "r   r&   r§  {  s   € ÷ 
3ñ 
3˜cñ 
3r   c                óL   € V P                   P                  pV'       d   V R2# R# )zQ
Microsoft Universal C Runtime SDK version subdir.

Return
------
str
    subdir
rI   r   )r©  r_  rñ  s   & r   r  ÚEnvironmentInfo._ucrt_subdirz  s&   € ð —'‘'×4Ñ4ˆß#*�7�)˜2�Ð2°Ð2r   c                ój   € RV P                   u;8”  d
   R8”  d    . #  V P                  P                  .# )z;
Microsoft Visual F#.

Return
------
list of str
    paths
r%  r&  )rÅ   r©  rO  r5   s   &r   ÚFSharpÚEnvironmentInfo.FSharp‡  s4   € ð �$—+‘+Ö$ Õ$ØˆIð %ð —‘×(Ñ(Ð)Ð)r   c               ó   € V ^8„  d   QhRR/# r@  r   )r%   s   "r   r&   r§  —  s   € ÷  Cñ  C ñ  Cr   c                óv  aa€ RV P                    R2oV P                  P                  RR7      P                  R4      o. pV P                  P
                  p\        P                  P                  VP                  RR4      4      p\        P                  P                  V4      '       dd   \        P                  P                  V\        P                  ! V4      R,          4      pW\        P                  P                  VR4      .,          pV\        P                  P                  VR	4      .,          pR
V P                   ^
,           R2R
\        V P                  4      ^
,           R23pVV3R l\        P                   ! W4       4       p\#        \%        \        P                  P&                  V4      R4      # )zc
Microsoft Visual C++ runtime redistributable dll.

Returns the first suitable path found or None.
Ú	vcruntimez0.dllTr¾  rI   z\Toolsz\RedistÚonecoreÚredistzMicrosoft.VCz.CRTc              3  ól   <"  € T F)  w  r\         P                  P                  VSVS4      x € K+  	  R # 5irb   )ro   rp   rq   )r•  r‘  Úcrt_dirrµ  r"  s   &  €€r   r—  Ú2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>³  s1   øé € ð 
á%JÑ!�ô �G‰G�L‰L˜ ¨g°y×AÐAÛ%Jùs   ƒ14Nr  )r¾   rd   rP   Ústripr©  r  ro   rp   Údirnamer,   r  rq   rî   ÚintrÅ   rÔ   rÕ   rš  ÚfilterÚisfile)r-   ÚprefixesÚ
tools_pathÚredist_pathÚcrt_dirsÚcandidate_pathsrµ  r"  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ÐBr   c               ó    € V ^8„  d   QhRRRR/# )r    Úexistsr:   r#   rŸ  r   )r%   s   "r   r&   r§  ¹  s   € ÷ ;ñ ; ð ;Ð1Añ ;r   c                óô  € \        V P                  RV P                  V P                  V P                  V P
                  .V4      V P                  RV P                  V P                  V P                  V P                  V P                  .V4      V P                  RV P                  V P                  V P                  V P                  .V4      V P                  RV P                  V P                  V P                  V P                   V P"                  V P                  V P$                  V P&                  V P(                  .	V4      R7      pV P*                  ^8¼  d"   V P,                  '       d   V P,                  VR&   V# )z‹
Return environment dict.

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

Return
------
dict
    environment
r   r-  r¡  rp   )r   r-  r¡  rp   r¢  )rŸ  Ú_build_pathsrº  rÜ  r  r  rÁ  rÕ  rû  r  rþ  rÄ  rå  rÏ  r¶  r  rê  rö  r
  r  r  rÅ   r2  )r-   r5  Úenvs   && r   Ú
return_envÚEnvironmentInfo.return_env¹  sU  € ô Ø×%Ñ%Øà—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Ð!5Ø)-×)=Ñ)=ˆCÐ%Ñ&Øˆ
r   c                ó
  € \         P                  P                  V4      p\        P                  ! VR4      P                  \        P                  4      p\         P                  ! WE4      pV'       d.   \        \        \        P                  P                  V4      4      MTpV'       g3   VP                  4        R2p\        P                  P                  V4      h\!        V4      p	\        P                  P#                  V	4      # )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
r   z environment variable is empty)rÔ   ÚchainÚfrom_iterabler   rZ   rÿ   ro   Úpathseprè  r+  rp   r  rË  rÉ   rÊ   rË   r   rq   )
r-   r§   Úspec_path_listsr5  Ú
spec_pathsÚ	env_pathsr´  Úextant_pathsr  Úunique_pathss
   &&&&      r   r7  Ú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   )rd   rÁ   r©  )Né    )T)#r   r   r   r   rY   r.   r[   rÅ   r¾   r¶  rº  rÁ  rÄ  rÏ  rÕ  rÜ  rå  rê  ré  rÓ  rö  rû  rþ  r  r  r
  r  r  r  r  r  r2  r9  r7  r   r   r   r   r¥  r¥  ˆ  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-r   r¥  )"Ú__conditional_annotations__rY   Ú
__future__r   rØ   rÔ   rð   ro   Úos.pathÚplatformÚtypingr   r   r   Úmore_itertoolsr   Ú_pathr   Úcompatr   Údistutils.errorsrÉ   Útyping_extensionsr	   r
   Úsystemr   r   r£  r   r]   r¹   rŸ  r¥  )rF  s   @r   Ú<module>rQ     s¨   øðôõ #ã Û Û Û 	Û Û ß 5Ñ 5å *å Ý ã çß<÷ ˜ŸšÓ*¨iÔ7ÛÞ÷!ñ !ð !€Gˆ^Ó ÷v
ñ v
÷r~ñ ~÷BW'ñ W'ôt1�yô 1÷M
-ó M
-r   