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 rf'\{ 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 , f'{ self .vs_ver :0.1f} ' ) or default
505507
506508 @property
507- def VCInstallDir (self ):
509+ def VCInstallDir (self ) -> str :
508510 """
509511 Microsoft Visual C++ directory.
510512
@@ -608,7 +610,7 @@ def WindowsSdkLastVersion(self):
608610 return self ._use_last_dir_name (os .path .join (self .WindowsSdkDir , 'lib' ))
609611
610612 @property
611- def WindowsSdkDir (self ) -> str | None : # noqa: C901 # is too complex (12) # FIXME
613+ def WindowsSdkDir (self ) -> str : # noqa: C901 # is too complex (12) # FIXME
612614 """
613615 Microsoft Windows SDK directory.
614616
@@ -651,13 +653,13 @@ def WindowsSdkDir(self) -> str | None: # noqa: C901 # is too complex (12) # F
651653 return sdkdir
652654
653655 @property
654- def WindowsSDKExecutablePath (self ):
656+ def WindowsSDKExecutablePath (self ) -> str | None :
655657 """
656658 Microsoft Windows SDK executable directory.
657659
658660 Return
659661 ------
660- str
662+ str | None
661663 path
662664 """
663665 # Find WinSDK NetFx Tools registry dir name
@@ -688,7 +690,7 @@ def WindowsSDKExecutablePath(self):
688690 return None
689691
690692 @property
691- def FSharpInstallDir (self ):
693+ def FSharpInstallDir (self ) -> str :
692694 """
693695 Microsoft Visual F# directory.
694696
@@ -701,7 +703,7 @@ def FSharpInstallDir(self):
701703 return self .ri .lookup (path , 'productdir' ) or ''
702704
703705 @property
704- def UniversalCRTSdkDir (self ):
706+ def UniversalCRTSdkDir (self ) -> str :
705707 """
706708 Microsoft Universal CRT SDK directory.
707709
@@ -717,9 +719,9 @@ def UniversalCRTSdkDir(self):
717719 for ver in vers :
718720 sdkdir = self .ri .lookup (self .ri .windows_kits_roots , f'kitsroot{ ver } ' )
719721 if sdkdir :
720- return sdkdir or ''
722+ return sdkdir
721723
722- return None
724+ return ''
723725
724726 @property
725727 def UniversalCRTSdkLastVersion (self ):
@@ -751,16 +753,15 @@ def NetFxSdkVersion(self):
751753 )
752754
753755 @property
754- def NetFxSdkDir (self ):
756+ def NetFxSdkDir (self ) -> str | None :
755757 """
756758 Microsoft .NET Framework SDK directory.
757759
758760 Return
759761 ------
760- str
762+ str | None
761763 path
762764 """
763- sdkdir = ''
764765 for ver in self .NetFxSdkVersion :
765766 loc = os .path .join (self .ri .netfx_sdk , ver )
766767 sdkdir = self .ri .lookup (loc , 'kitsinstallationfolder' )
@@ -769,7 +770,7 @@ def NetFxSdkDir(self):
769770 return sdkdir
770771
771772 @property
772- def FrameworkDir32 (self ):
773+ def FrameworkDir32 (self ) -> str :
773774 """
774775 Microsoft .NET Framework 32bit directory.
775776
@@ -785,7 +786,7 @@ def FrameworkDir32(self):
785786 return self .ri .lookup (self .ri .vc , 'frameworkdir32' ) or guess_fw
786787
787788 @property
788- def FrameworkDir64 (self ):
789+ def FrameworkDir64 (self ) -> str :
789790 """
790791 Microsoft .NET Framework 64bit directory.
791792
@@ -855,7 +856,7 @@ def _find_dot_net_versions(self, bits) -> tuple[str, ...]:
855856 return ()
856857
857858 @staticmethod
858- def _use_last_dir_name (path , prefix = '' ):
859+ def _use_last_dir_name (path : StrPath , prefix : str = '' ) -> str :
859860 """
860861 Return name of the last dir in path or '' if no dir found.
861862
@@ -877,7 +878,7 @@ def _use_last_dir_name(path, prefix=''):
877878 if os .path .isdir (os .path .join (path , dir_name ))
878879 and dir_name .startswith (prefix )
879880 )
880- return next (matching_dirs , None ) or ''
881+ return next (matching_dirs , '' )
881882
882883
883884class _EnvironmentDict (TypedDict ):
@@ -1191,7 +1192,7 @@ def _sdk_tools(self):
11911192 yield self .si .WindowsSDKExecutablePath
11921193
11931194 @property
1194- def _sdk_subdir (self ):
1195+ def _sdk_subdir (self ) -> str :
11951196 """
11961197 Microsoft Windows SDK version subdir.
11971198
@@ -1370,7 +1371,7 @@ def UCRTIncludes(self):
13701371 return [os .path .join (include , f'{ self ._ucrt_subdir } ucrt' )]
13711372
13721373 @property
1373- def _ucrt_subdir (self ):
1374+ def _ucrt_subdir (self ) -> str :
13741375 """
13751376 Microsoft Universal C Runtime SDK version subdir.
13761377
0 commit comments