1717
1818from more_itertools import unique_everseen
1919
20+ from ._path import StrPath
21+
2022import distutils .errors
2123
2224if TYPE_CHECKING :
@@ -135,7 +137,7 @@ def target_dir(self, hidex86=False, x64=False) -> str:
135137 else r'\%s' % self .target_cpu
136138 )
137139
138- def cross_dir (self , forcex86 = False ):
140+ def cross_dir (self , forcex86 = False ) -> str :
139141 r"""
140142 Cross platform specific subfolder.
141143
@@ -306,7 +308,7 @@ def microsoft(self, key, x86=False):
306308 node64 = '' if self .pi .current_is_x86 () or x86 else 'Wow6432Node'
307309 return os .path .join ('Software' , node64 , 'Microsoft' , key )
308310
309- def lookup (self , key , name ) :
311+ def lookup (self , key : str , name : str ) -> str | None :
310312 """
311313 Look for values in registry in Microsoft software registry.
312314
@@ -319,7 +321,7 @@ def lookup(self, key, name):
319321
320322 Return
321323 ------
322- str
324+ str | None
323325 value
324326 """
325327 key_read = winreg .KEY_READ
@@ -486,7 +488,7 @@ def _as_float_version(version):
486488 return float ('.' .join (version .split ('.' )[:2 ]))
487489
488490 @property
489- def VSInstallDir (self ):
491+ def VSInstallDir (self ) -> str :
490492 """
491493 Microsoft Visual Studio directory.
492494
@@ -504,7 +506,7 @@ def VSInstallDir(self):
504506 return self .ri .lookup (self .ri .vs , '%0.1f' % self .vs_ver ) or default
505507
506508 @property
507- def VCInstallDir (self ):
509+ def VCInstallDir (self ) -> str :
508510 """
509511 Microsoft Visual C++ directory.
510512
@@ -607,7 +609,7 @@ def WindowsSdkLastVersion(self):
607609 return self ._use_last_dir_name (os .path .join (self .WindowsSdkDir , 'lib' ))
608610
609611 @property
610- def WindowsSdkDir (self ) -> str | None : # noqa: C901 # is too complex (12) # FIXME
612+ def WindowsSdkDir (self ) -> str : # noqa: C901 # is too complex (12) # FIXME
611613 """
612614 Microsoft Windows SDK directory.
613615
@@ -650,13 +652,13 @@ def WindowsSdkDir(self) -> str | None: # noqa: C901 # is too complex (12) # F
650652 return sdkdir
651653
652654 @property
653- def WindowsSDKExecutablePath (self ):
655+ def WindowsSDKExecutablePath (self ) -> str | None :
654656 """
655657 Microsoft Windows SDK executable directory.
656658
657659 Return
658660 ------
659- str
661+ str | None
660662 path
661663 """
662664 # Find WinSDK NetFx Tools registry dir name
@@ -687,7 +689,7 @@ def WindowsSDKExecutablePath(self):
687689 return None
688690
689691 @property
690- def FSharpInstallDir (self ):
692+ def FSharpInstallDir (self ) -> str :
691693 """
692694 Microsoft Visual F# directory.
693695
@@ -700,7 +702,7 @@ def FSharpInstallDir(self):
700702 return self .ri .lookup (path , 'productdir' ) or ''
701703
702704 @property
703- def UniversalCRTSdkDir (self ):
705+ def UniversalCRTSdkDir (self ) -> str :
704706 """
705707 Microsoft Universal CRT SDK directory.
706708
@@ -716,9 +718,9 @@ def UniversalCRTSdkDir(self):
716718 for ver in vers :
717719 sdkdir = self .ri .lookup (self .ri .windows_kits_roots , 'kitsroot%s' % ver )
718720 if sdkdir :
719- return sdkdir or ''
721+ return sdkdir
720722
721- return None
723+ return ''
722724
723725 @property
724726 def UniversalCRTSdkLastVersion (self ):
@@ -750,16 +752,15 @@ def NetFxSdkVersion(self):
750752 )
751753
752754 @property
753- def NetFxSdkDir (self ):
755+ def NetFxSdkDir (self ) -> str | None :
754756 """
755757 Microsoft .NET Framework SDK directory.
756758
757759 Return
758760 ------
759- str
761+ str | None
760762 path
761763 """
762- sdkdir = ''
763764 for ver in self .NetFxSdkVersion :
764765 loc = os .path .join (self .ri .netfx_sdk , ver )
765766 sdkdir = self .ri .lookup (loc , 'kitsinstallationfolder' )
@@ -768,7 +769,7 @@ def NetFxSdkDir(self):
768769 return sdkdir
769770
770771 @property
771- def FrameworkDir32 (self ):
772+ def FrameworkDir32 (self ) -> str :
772773 """
773774 Microsoft .NET Framework 32bit directory.
774775
@@ -784,7 +785,7 @@ def FrameworkDir32(self):
784785 return self .ri .lookup (self .ri .vc , 'frameworkdir32' ) or guess_fw
785786
786787 @property
787- def FrameworkDir64 (self ):
788+ def FrameworkDir64 (self ) -> str :
788789 """
789790 Microsoft .NET Framework 64bit directory.
790791
@@ -854,7 +855,7 @@ def _find_dot_net_versions(self, bits) -> tuple[str, ...]:
854855 return ()
855856
856857 @staticmethod
857- def _use_last_dir_name (path , prefix = '' ):
858+ def _use_last_dir_name (path : StrPath , prefix : str = '' ) -> str :
858859 """
859860 Return name of the last dir in path or '' if no dir found.
860861
@@ -876,7 +877,7 @@ def _use_last_dir_name(path, prefix=''):
876877 if os .path .isdir (os .path .join (path , dir_name ))
877878 and dir_name .startswith (prefix )
878879 )
879- return next (matching_dirs , None ) or ''
880+ return next (matching_dirs , '' )
880881
881882
882883class _EnvironmentDict (TypedDict ):
@@ -1190,7 +1191,7 @@ def _sdk_tools(self):
11901191 yield self .si .WindowsSDKExecutablePath
11911192
11921193 @property
1193- def _sdk_subdir (self ):
1194+ def _sdk_subdir (self ) -> str :
11941195 """
11951196 Microsoft Windows SDK version subdir.
11961197
@@ -1369,7 +1370,7 @@ def UCRTIncludes(self):
13691370 return [os .path .join (include , '%sucrt' % self ._ucrt_subdir )]
13701371
13711372 @property
1372- def _ucrt_subdir (self ):
1373+ def _ucrt_subdir (self ) -> str :
13731374 """
13741375 Microsoft Universal C Runtime SDK version subdir.
13751376
0 commit comments