diff options
Diffstat (limited to 'SCons/Tool')
149 files changed, 517 insertions, 515 deletions
diff --git a/SCons/Tool/386asm.py b/SCons/Tool/386asm.py index 51738ebc1..f19f75810 100644 --- a/SCons/Tool/386asm.py +++ b/SCons/Tool/386asm.py @@ -39,7 +39,7 @@ import SCons.Util as_module = __import__('as', globals(), locals(), [], 1) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ar to an Environment.""" as_module.generate(env) diff --git a/SCons/Tool/DCommon.py b/SCons/Tool/DCommon.py index 128e56165..a4f976d42 100644 --- a/SCons/Tool/DCommon.py +++ b/SCons/Tool/DCommon.py @@ -32,7 +32,7 @@ Coded by Russel Winder (russel@winder.org.uk) import os.path -def isD(env, source): +def isD(env, source) -> int: if not source: return 0 for s in source: @@ -43,7 +43,7 @@ def isD(env, source): return 0 -def addDPATHToEnv(env, executable): +def addDPATHToEnv(env, executable) -> None: dPath = env.WhereIs(executable) if dPath: phobosDir = dPath[:dPath.rindex(executable)] + '/../src/phobos' diff --git a/SCons/Tool/FortranCommon.py b/SCons/Tool/FortranCommon.py index aff0f9238..f893a12b7 100644 --- a/SCons/Tool/FortranCommon.py +++ b/SCons/Tool/FortranCommon.py @@ -30,7 +30,7 @@ from typing import Tuple import SCons.Scanner.Fortran import SCons.Tool import SCons.Util -from SCons.Action import Action +from SCons.Action import Action, ActionBase def isfortran(env, source) -> bool: @@ -115,7 +115,9 @@ def ComputeFortranSuffixes(suffixes, ppsuffixes) -> None: else: suffixes.extend(upper_suffixes) -def CreateDialectActions(dialect) -> Tuple[Action, Action, Action, Action]: +def CreateDialectActions( + dialect: str, +) -> Tuple[ActionBase, ActionBase, ActionBase, ActionBase]: """Create dialect specific actions.""" CompAction = Action(f'${dialect}COM ', cmdstr=f'${dialect}COMSTR') CompPPAction = Action(f'${dialect}PPCOM ', cmdstr=f'${dialect}PPCOMSTR') @@ -124,7 +126,7 @@ def CreateDialectActions(dialect) -> Tuple[Action, Action, Action, Action]: return CompAction, CompPPAction, ShCompAction, ShCompPPAction -def DialectAddToEnv(env, dialect, suffixes, ppsuffixes, support_mods=False) -> None: +def DialectAddToEnv(env, dialect, suffixes, ppsuffixes, support_mods: bool=False) -> None: """Add dialect specific construction variables. Args: diff --git a/SCons/Tool/FortranCommonTests.py b/SCons/Tool/FortranCommonTests.py index 56f41c7e7..a2960d6d3 100644 --- a/SCons/Tool/FortranCommonTests.py +++ b/SCons/Tool/FortranCommonTests.py @@ -44,21 +44,21 @@ os.chdir(test.workpath('')) class DummyEnvironment: dictionary = None # type: Dict[Any, Any] - def __init__(self, list_cpp_path): + def __init__(self, list_cpp_path) -> None: self.path = list_cpp_path self.fs = SCons.Node.FS.FS(test.workpath('')) self.dictionary = {} - def __contains__(self, key): + def __contains__(self, key) -> bool: return key in self.dictionary def __getitem__(self, key): return self.dictionary[key] - def __setitem__(self, key, value): + def __setitem__(self, key, value) -> None: self.dictionary[key] = value - def __delitem__(self, key): + def __delitem__(self, key) -> None: del self.dictionary[key] def subst(self, arg, target=None, source=None, conv=None): @@ -85,7 +85,7 @@ class DummyEnvironment: class FortranScannerSubmodulesTestCase(unittest.TestCase): - def runTest(self): + def runTest(self) -> None: """ Check that test_1.f90 and test_2.f90 which have interface specifications Don't generate targets for those modules listed in the interface section diff --git a/SCons/Tool/GettextCommon.py b/SCons/Tool/GettextCommon.py index 058b9971e..ba9ce3102 100644 --- a/SCons/Tool/GettextCommon.py +++ b/SCons/Tool/GettextCommon.py @@ -82,8 +82,8 @@ class _POTargetFactory: default for all produced nodes. """ - def __init__(self, env, nodefault=True, alias=None, precious=True - , noclean=True): + def __init__(self, env, nodefault: bool=True, alias=None, precious: bool=True + , noclean: bool=True) -> None: """ Object constructor. **Arguments** @@ -104,7 +104,7 @@ class _POTargetFactory: self.noclean = noclean self.nodefault = nodefault - def _create_node(self, name, factory, directory=None, create=1): + def _create_node(self, name, factory, directory=None, create: int=1): """ Create node, and set it up to factory settings. """ node = factory(name, directory, create) node.set_noclean(self.noclean) @@ -115,11 +115,11 @@ class _POTargetFactory: self.env.AlwaysBuild(self.env.Alias(self.alias, node)) return node - def Entry(self, name, directory=None, create=1): + def Entry(self, name, directory=None, create: int=1): """ Create `SCons.Node.FS.Entry` """ return self._create_node(name, self.env.fs.Entry, directory, create) - def File(self, name, directory=None, create=1): + def File(self, name, directory=None, create: int=1): """ Create `SCons.Node.FS.File` """ return self._create_node(name, self.env.fs.File, directory, create) @@ -191,7 +191,7 @@ class _POFileBuilder(BuilderBase): # and execute iterativelly (recursion) self._execute(None, source[i]). # After that it calls emitter (which is quite too late). The emitter is # also called in each iteration, what makes things yet worse. - def __init__(self, env, **kw): + def __init__(self, env, **kw) -> None: if 'suffix' not in kw: kw['suffix'] = '$POSUFFIX' if 'src_suffix' not in kw: @@ -300,7 +300,7 @@ class RPaths: # seems be enough for our purposes (don't need TARGET variable and # SCons.Defaults.Variable_Caller stuff). - def __init__(self, env): + def __init__(self, env) -> None: """ Initialize `RPaths` callable object. **Arguments**: diff --git a/SCons/Tool/JavaCommon.py b/SCons/Tool/JavaCommon.py index adec1d3a7..96000d06b 100644 --- a/SCons/Tool/JavaCommon.py +++ b/SCons/Tool/JavaCommon.py @@ -100,7 +100,7 @@ if java_parsing: """The initial state for parsing a Java file for classes, interfaces, and anonymous inner classes.""" - def __init__(self, version=default_java_version): + def __init__(self, version=default_java_version) -> None: if version not in ( '1.1', '1.2', @@ -136,7 +136,7 @@ if java_parsing: self.anonStacksStack = [[0]] self.package = None - def trace(self): + def trace(self) -> None: pass def __getClassState(self): @@ -175,10 +175,10 @@ if java_parsing: def _getAnonStack(self): return self.anonStacksStack[-1] - def openBracket(self): + def openBracket(self) -> None: self.brackets = self.brackets + 1 - def closeBracket(self): + def closeBracket(self) -> None: self.brackets = self.brackets - 1 if len(self.stackBrackets) and \ self.brackets == self.stackBrackets[-1]: @@ -223,7 +223,7 @@ if java_parsing: return self.__getSkipState() return self - def addAnonClass(self): + def addAnonClass(self) -> None: """Add an anonymous inner class""" if self.version in ('1.1', '1.2', '1.3', '1.4'): clazz = self.listClasses[0] @@ -257,7 +257,7 @@ if java_parsing: self.nextAnon = self.nextAnon + 1 self._getAnonStack().append(0) - def setPackage(self, package): + def setPackage(self, package) -> None: self.package = package @@ -267,7 +267,7 @@ if java_parsing: within the confines of a scope. """ - def __init__(self, old_state): + def __init__(self, old_state) -> None: self.outer_state = old_state.outer_state self.old_state = old_state self.brackets = 0 @@ -296,10 +296,10 @@ if java_parsing: self.skipState = ret return ret - def openBracket(self): + def openBracket(self) -> None: self.brackets = self.brackets + 1 - def closeBracket(self): + def closeBracket(self) -> None: self.brackets = self.brackets - 1 def parseToken(self, token): @@ -332,7 +332,7 @@ if java_parsing: class AnonClassState: """A state that looks for anonymous inner classes.""" - def __init__(self, old_state): + def __init__(self, old_state) -> None: # outer_state is always an instance of OuterState self.outer_state = old_state.outer_state self.old_state = old_state @@ -373,7 +373,7 @@ if java_parsing: """A state that will skip a specified number of tokens before reverting to the previous state.""" - def __init__(self, tokens_to_skip, old_state): + def __init__(self, tokens_to_skip, old_state) -> None: self.tokens_to_skip = tokens_to_skip self.old_state = old_state @@ -387,7 +387,7 @@ if java_parsing: class ClassState: """A state we go into when we hit a class or interface keyword.""" - def __init__(self, outer_state): + def __init__(self, outer_state) -> None: # outer_state is always an instance of OuterState self.outer_state = outer_state @@ -419,7 +419,7 @@ if java_parsing: """A state that will ignore all tokens until it gets to a specified token.""" - def __init__(self, ignore_until, old_state): + def __init__(self, ignore_until, old_state) -> None: self.ignore_until = ignore_until self.old_state = old_state @@ -433,7 +433,7 @@ if java_parsing: """The state we enter when we encounter the package keyword. We assume the next token will be the package name.""" - def __init__(self, outer_state): + def __init__(self, outer_state) -> None: # outer_state is always an instance of OuterState self.outer_state = outer_state diff --git a/SCons/Tool/JavaCommonTests.py b/SCons/Tool/JavaCommonTests.py index 75e75efd6..fa462b698 100644 --- a/SCons/Tool/JavaCommonTests.py +++ b/SCons/Tool/JavaCommonTests.py @@ -34,14 +34,14 @@ import TestSCons # the parser to spit out trace messages of the tokens it sees and the # attendant transitions. -def trace(token, newstate): +def trace(token, newstate) -> None: from SCons.Debug import Trace statename = newstate.__class__.__name__ Trace('token = %s, state = %s\n' % (repr(token), statename)) class parse_javaTestCase(unittest.TestCase): - def test_bare_bones(self): + def test_bare_bones(self) -> None: """Test a bare-bones class""" input = """\ @@ -65,7 +65,7 @@ public class Foo assert classes == ['Foo'], classes - def test_file_parser(self): + def test_file_parser(self) -> None: """Test the file parser""" input = """\ package com.sub.bar; @@ -90,7 +90,7 @@ public class Foo assert classes == ['Foo'], classes - def test_dollar_sign(self): + def test_dollar_sign(self) -> None: """Test class names with $ in them""" input = """\ @@ -104,7 +104,7 @@ public class BadDep { - def test_inner_classes(self): + def test_inner_classes(self) -> None: """Test parsing various forms of inner classes""" input = """\ @@ -227,7 +227,7 @@ class Private { - def test_comments(self): + def test_comments(self) -> None: """Test a class with comments""" input = """\ @@ -272,7 +272,7 @@ public class Example1 extends UnicastRemoteObject implements Hello { assert classes == ['Example1'], classes - def test_arrays(self): + def test_arrays(self) -> None: """Test arrays of class instances""" input = """\ @@ -292,7 +292,7 @@ public class Test { - def test_backslash(self): + def test_backslash(self) -> None: """Test backslash handling""" input = """\ @@ -310,7 +310,7 @@ public class MyTabs assert classes == ['MyTabs$MyInternal', 'MyTabs'], classes - def test_enum(self): + def test_enum(self) -> None: """Test the Java 1.5 enum keyword""" input = """\ @@ -323,7 +323,7 @@ public enum a {} assert classes == ['a'], classes - def test_anon_classes(self): + def test_anon_classes(self) -> None: """Test anonymous classes""" input = """\ @@ -347,7 +347,7 @@ public abstract class TestClass assert classes == ['TestClass$1', 'TestClass$2', 'TestClass'], classes - def test_closing_bracket(self): + def test_closing_bracket(self) -> None: """Test finding a closing bracket instead of an anonymous class""" input = """\ @@ -365,7 +365,7 @@ class Foo { } assert classes == ['TestSCons', 'Foo'], classes - def test_dot_class_attributes(self): + def test_dot_class_attributes(self) -> None: """Test handling ".class" attributes""" input = """\ @@ -398,7 +398,7 @@ public class A { assert pkg_dir is None, pkg_dir assert classes == ['A$B', 'A'], classes - def test_anonymous_classes_with_parentheses(self): + def test_anonymous_classes_with_parentheses(self) -> None: """Test finding anonymous classes marked by parentheses""" input = """\ @@ -432,7 +432,7 @@ public class Foo { - def test_nested_anonymous_inner_classes(self): + def test_nested_anonymous_inner_classes(self) -> None: """Test finding nested anonymous inner classes""" input = """\ @@ -481,7 +481,7 @@ public class NestedExample expect = [ 'NestedExample$1', 'NestedExample$1$1', 'NestedExample' ] assert expect == classes, (expect, classes) - def test_lambda_after_new(self): + def test_lambda_after_new(self) -> None: """Test lamdas after new""" input = """\ @@ -518,7 +518,7 @@ public class LamdaExample expect = [ 'LamdaExample' ] assert expect == classes, (expect, classes) - def test_private_inner_class_instantiation(self): + def test_private_inner_class_instantiation(self) -> None: """Test anonymous inner class generated by private instantiation""" input = """\ @@ -551,7 +551,7 @@ class test pkg_dir, classes = SCons.Tool.JavaCommon.parse_java(input, '1.5') assert expect == classes, (expect, classes) - def test_floating_point_numbers(self): + def test_floating_point_numbers(self) -> None: """Test floating-point numbers in the input stream""" input = """ // Broken.java @@ -592,7 +592,7 @@ class Broken assert expect == classes, (expect, classes) - def test_genercis(self): + def test_genercis(self) -> None: """Test that generics don't interfere with detecting anonymous classes""" input = """\ @@ -624,7 +624,7 @@ public class Foo assert expect == classes, (expect, classes) - def test_in_function_class_declaration(self): + def test_in_function_class_declaration(self) -> None: """ Test that implementing a class in a function call doesn't confuse SCons. """ @@ -667,7 +667,7 @@ public class AnonDemo { pkg_dir, classes = SCons.Tool.JavaCommon.parse_java(input, '1.8') assert expect == classes, (expect, classes) - def test_jdk_globs(self): + def test_jdk_globs(self) -> None: """ Verify that the java path globs work with specific examples. :return: diff --git a/SCons/Tool/MSCommon/MSVC/ConfigTests.py b/SCons/Tool/MSCommon/MSVC/ConfigTests.py index 89db6cda5..cbd811e45 100644 --- a/SCons/Tool/MSCommon/MSVC/ConfigTests.py +++ b/SCons/Tool/MSCommon/MSVC/ConfigTests.py @@ -44,7 +44,7 @@ class Patch: return hook @classmethod - def restore(cls): + def restore(cls) -> None: vc._VCVER = cls._VCVER class Config: @@ -58,13 +58,13 @@ class Patch: return hook @classmethod - def restore(cls): + def restore(cls) -> None: Config.MSVC_VERSION_INTERNAL = cls.MSVC_VERSION_INTERNAL class ConfigTests(unittest.TestCase): - def test_vcver(self): + def test_vcver(self) -> None: # all vc._VCVER in Config.MSVC_VERSION_SUFFIX _VCVER = Patch.vc._VCVER.enable_copy() _VCVER.append('99.9') @@ -72,7 +72,7 @@ class ConfigTests(unittest.TestCase): Config.verify() Patch.vc._VCVER.restore() - def test_msvc_version_internal(self): + def test_msvc_version_internal(self) -> None: # all vc._VCVER numstr in Config.MSVC_VERSION_INTERNAL MSVC_VERSION_INTERNAL = Patch.Config.MSVC_VERSION_INTERNAL.enable_copy() del MSVC_VERSION_INTERNAL['14.3'] @@ -80,7 +80,7 @@ class ConfigTests(unittest.TestCase): Config.verify() Patch.Config.MSVC_VERSION_INTERNAL.restore() - def test_verify(self): + def test_verify(self) -> None: Config.verify() diff --git a/SCons/Tool/MSCommon/MSVC/Dispatcher.py b/SCons/Tool/MSCommon/MSVC/Dispatcher.py index 42b5287b0..31233a969 100644 --- a/SCons/Tool/MSCommon/MSVC/Dispatcher.py +++ b/SCons/Tool/MSCommon/MSVC/Dispatcher.py @@ -53,16 +53,16 @@ from ..common import ( _refs = [] -def register_modulename(modname): +def register_modulename(modname) -> None: module = sys.modules[modname] _refs.append(module) -def register_class(ref): +def register_class(ref) -> None: _refs.append(ref) -def reset(): +def reset() -> None: debug('') for ref in _refs: for method in ['reset', '_reset']: @@ -73,7 +73,7 @@ def reset(): func() -def verify(): +def verify() -> None: debug('') for ref in _refs: for method in ['verify', '_verify']: diff --git a/SCons/Tool/MSCommon/MSVC/DispatcherTests.py b/SCons/Tool/MSCommon/MSVC/DispatcherTests.py index d6af8d464..61ea3f12f 100644 --- a/SCons/Tool/MSCommon/MSVC/DispatcherTests.py +++ b/SCons/Tool/MSCommon/MSVC/DispatcherTests.py @@ -46,37 +46,37 @@ verify = None class StaticMethods: @staticmethod - def _reset(): + def _reset() -> None: Data.reset_count += 1 @staticmethod - def reset(): + def reset() -> None: Data.reset_count += 1 @staticmethod - def _verify(): + def _verify() -> None: Data.verify_count += 1 @staticmethod - def verify(): + def verify() -> None: Data.verify_count += 1 class ClassMethods: @classmethod - def _reset(cls): + def _reset(cls) -> None: Data.reset_count += 1 @classmethod - def reset(cls): + def reset(cls) -> None: Data.reset_count += 1 @classmethod - def _verify(cls): + def _verify(cls) -> None: Data.verify_count += 1 @classmethod - def verify(cls): + def verify(cls) -> None: Data.verify_count += 1 @@ -94,22 +94,22 @@ MSVC.Dispatcher.register_class(NotCallable) class DispatcherTests(unittest.TestCase): - def test_dispatcher_reset(self): + def test_dispatcher_reset(self) -> None: MSVC.Dispatcher.reset() self.assertTrue(Data.reset_count == 4, "MSVC.Dispatcher.reset() count failed") Data.reset_count = 0 - def test_dispatcher_verify(self): + def test_dispatcher_verify(self) -> None: MSVC.Dispatcher.verify() self.assertTrue(Data.verify_count == 4, "MSVC.Dispatcher.verify() count failed") Data.verify_count = 0 - def test_msvc_reset(self): + def test_msvc_reset(self) -> None: MSVC._reset() self.assertTrue(Data.reset_count == 4, "MSVC._reset() count failed") Data.reset_count = 0 - def test_msvc_verify(self): + def test_msvc_verify(self) -> None: MSVC._verify() self.assertTrue(Data.verify_count == 4, "MSVC._verify() count failed") Data.verify_count = 0 diff --git a/SCons/Tool/MSCommon/MSVC/PolicyTests.py b/SCons/Tool/MSCommon/MSVC/PolicyTests.py index 013fd477d..a312d1191 100644 --- a/SCons/Tool/MSCommon/MSVC/PolicyTests.py +++ b/SCons/Tool/MSCommon/MSVC/PolicyTests.py @@ -43,22 +43,22 @@ from SCons.Tool.MSCommon.MSVC.Warnings import ( class PolicyTests(unittest.TestCase): - def setUp(self): + def setUp(self) -> None: self.warnstack = [] - def push_warning_as_exception(self, warning_class): + def push_warning_as_exception(self, warning_class) -> None: SCons.Warnings.enableWarningClass(warning_class) prev_state = SCons.Warnings.warningAsException() self.warnstack.append((warning_class, prev_state)) - def pop_warning_as_exception(self): + def pop_warning_as_exception(self) -> None: warning_class, prev_state = self.warnstack.pop() SCons.Warnings.warningAsException(prev_state) SCons.Warnings.suppressWarningClass(warning_class) # msvc_set_notfound_policy, msvc_get_notfound_policy, and MSVC_NOTFOUND_POLICY - def test_notfound_func_valid_symbols(self): + def test_notfound_func_valid_symbols(self) -> None: def_policy = Policy.msvc_get_notfound_policy() last_policy = def_policy for notfound_def in Policy.MSVC_NOTFOUND_DEFINITION_LIST: @@ -75,21 +75,21 @@ class PolicyTests(unittest.TestCase): last_policy = cur_get_policy Policy.msvc_set_notfound_policy(def_policy) - def test_notfound_func_invalid_symbol(self): + def test_notfound_func_invalid_symbol(self) -> None: with self.assertRaises(MSVCArgumentError): Policy.msvc_set_notfound_policy('Undefined') - def test_notfound_handler_invalid_symbol(self): + def test_notfound_handler_invalid_symbol(self) -> None: with self.assertRaises(MSVCArgumentError): Policy.msvc_notfound_handler({'MSVC_NOTFOUND_POLICY': 'Undefined'}, '') - def test_notfound_handler_ignore(self): + def test_notfound_handler_ignore(self) -> None: def_policy = Policy.msvc_set_notfound_policy('Ignore') Policy.msvc_notfound_handler(None, '') Policy.msvc_notfound_handler({'MSVC_NOTFOUND_POLICY': None}, '') Policy.msvc_set_notfound_policy(def_policy) - def test_notfound_handler_warning(self): + def test_notfound_handler_warning(self) -> None: # treat warning as exception for testing self.push_warning_as_exception(SCons.Warnings.VisualCMissingWarning) def_policy = Policy.msvc_set_notfound_policy('Warning') @@ -101,7 +101,7 @@ class PolicyTests(unittest.TestCase): Policy.msvc_set_notfound_policy(def_policy) self.pop_warning_as_exception() - def test_notfound_handler_error(self): + def test_notfound_handler_error(self) -> None: def_policy = Policy.msvc_set_notfound_policy('Error') with self.assertRaises(MSVCVersionNotFound): Policy.msvc_notfound_handler(None, '') @@ -112,7 +112,7 @@ class PolicyTests(unittest.TestCase): # msvc_set_scripterror_policy, msvc_get_scripterror_policy, and MSVC_SCRIPTERROR_POLICY - def test_scripterror_func_valid_symbols(self): + def test_scripterror_func_valid_symbols(self) -> None: def_policy = Policy.msvc_get_scripterror_policy() last_policy = def_policy for scripterror_def in Policy.MSVC_SCRIPTERROR_DEFINITION_LIST: @@ -129,21 +129,21 @@ class PolicyTests(unittest.TestCase): last_policy = cur_get_policy Policy.msvc_set_scripterror_policy(def_policy) - def test_scripterror_func_invalid_symbol(self): + def test_scripterror_func_invalid_symbol(self) -> None: with self.assertRaises(MSVCArgumentError): Policy.msvc_set_scripterror_policy('Undefined') - def test_scripterror_handler_invalid_symbol(self): + def test_scripterror_handler_invalid_symbol(self) -> None: with self.assertRaises(MSVCArgumentError): Policy.msvc_scripterror_handler({'MSVC_SCRIPTERROR_POLICY': 'Undefined'}, '') - def test_scripterror_handler_ignore(self): + def test_scripterror_handler_ignore(self) -> None: def_policy = Policy.msvc_set_scripterror_policy('Ignore') Policy.msvc_scripterror_handler(None, '') Policy.msvc_scripterror_handler({'MSVC_SCRIPTERROR_POLICY': None}, '') Policy.msvc_set_scripterror_policy(def_policy) - def test_scripterror_handler_warning(self): + def test_scripterror_handler_warning(self) -> None: # treat warning as exception for testing self.push_warning_as_exception(MSVCScriptExecutionWarning) def_policy = Policy.msvc_set_scripterror_policy('Warning') @@ -155,7 +155,7 @@ class PolicyTests(unittest.TestCase): Policy.msvc_set_scripterror_policy(def_policy) self.pop_warning_as_exception() - def test_scripterror_handler_error(self): + def test_scripterror_handler_error(self) -> None: def_policy = Policy.msvc_set_scripterror_policy('Error') with self.assertRaises(MSVCScriptExecutionError): Policy.msvc_scripterror_handler(None, '') diff --git a/SCons/Tool/MSCommon/MSVC/Registry.py b/SCons/Tool/MSCommon/MSVC/Registry.py index 9519e1553..eee20ccbc 100644 --- a/SCons/Tool/MSCommon/MSVC/Registry.py +++ b/SCons/Tool/MSCommon/MSVC/Registry.py @@ -46,7 +46,7 @@ Dispatcher.register_modulename(__name__) # A null-terminated string that contains unexpanded references to environment variables. REG_EXPAND_SZ = 2 -def read_value(hkey, subkey_valname, expand=True): +def read_value(hkey, subkey_valname, expand: bool=True): try: rval_t = RegGetValue(hkey, subkey_valname) except OSError: @@ -58,7 +58,7 @@ def read_value(hkey, subkey_valname, expand=True): debug('hkey=%s, subkey=%s, rval=%s', repr(hkey), repr(subkey_valname), repr(rval)) return rval -def registry_query_path(key, val, suffix, expand=True): +def registry_query_path(key, val, suffix, expand: bool=True): extval = val + '\\' + suffix if suffix else val qpath = read_value(key, extval, expand=expand) if qpath and os.path.exists(qpath): @@ -74,7 +74,7 @@ REG_SOFTWARE_MICROSOFT = [ (HKEY_CURRENT_USER, r'Software\Microsoft'), ] -def microsoft_query_paths(suffix, usrval=None, expand=True): +def microsoft_query_paths(suffix, usrval=None, expand: bool=True): paths = [] records = [] for key, val in REG_SOFTWARE_MICROSOFT: @@ -87,7 +87,7 @@ def microsoft_query_paths(suffix, usrval=None, expand=True): records.append((qpath, key, val, extval, usrval)) return records -def microsoft_query_keys(suffix, usrval=None, expand=True): +def microsoft_query_keys(suffix, usrval=None, expand: bool=True): records = [] for key, val in REG_SOFTWARE_MICROSOFT: extval = val + '\\' + suffix if suffix else val diff --git a/SCons/Tool/MSCommon/MSVC/RegistryTests.py b/SCons/Tool/MSCommon/MSVC/RegistryTests.py index aff3b3f99..9c9ef89a0 100644 --- a/SCons/Tool/MSCommon/MSVC/RegistryTests.py +++ b/SCons/Tool/MSCommon/MSVC/RegistryTests.py @@ -37,7 +37,7 @@ class RegistryTests(unittest.TestCase): _sdk_versions = None @classmethod - def setUpClass(cls): + def setUpClass(cls) -> None: cls._sdk_versions = [] sdk_seen = set() for vs_def in Config.VISUALSTUDIO_DEFINITION_LIST: @@ -49,24 +49,24 @@ class RegistryTests(unittest.TestCase): sdk_seen.add(sdk_version) cls._sdk_versions.append(sdk_version) - def setUp(self): + def setUp(self) -> None: self.sdk_versions = self.__class__._sdk_versions - def test_sdk_query_paths(self): + def test_sdk_query_paths(self) -> None: for sdk_version in self.sdk_versions: _ = Registry.sdk_query_paths(sdk_version) - def test_vstudio_sxs_vc7(self): + def test_vstudio_sxs_vc7(self) -> None: suffix = Registry.vstudio_sxs_vc7('14.0') _ = Registry.microsoft_query_paths(suffix) - def test_microsoft_query_keys(self): + def test_microsoft_query_keys(self) -> None: val = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment' for suffix in ['Temp', 'Tmp']: _ = Registry.registry_query_path(Registry.HKEY_LOCAL_MACHINE, val, suffix, expand=True) _ = Registry.registry_query_path(Registry.HKEY_LOCAL_MACHINE, val, suffix, expand=False) - def test_registry_query_path(self): + def test_registry_query_path(self) -> None: # need a better test for when VS2015 is no longer installed for component_reg in ('enterprise', 'professional', 'community'): suffix = Registry.devdiv_vs_servicing_component('14.0', component_reg) @@ -74,7 +74,7 @@ class RegistryTests(unittest.TestCase): if not rval: continue - def test_windows_kit_query_paths(self): + def test_windows_kit_query_paths(self) -> None: for sdk_version in self.sdk_versions: _ = Registry.windows_kit_query_paths(sdk_version) diff --git a/SCons/Tool/MSCommon/MSVC/ScriptArguments.py b/SCons/Tool/MSCommon/MSVC/ScriptArguments.py index 57dbf9d3f..a5ceb332f 100644 --- a/SCons/Tool/MSCommon/MSVC/ScriptArguments.py +++ b/SCons/Tool/MSCommon/MSVC/ScriptArguments.py @@ -107,12 +107,12 @@ _MSVC_FORCE_DEFAULT_TOOLSET = False # Force default arguments _MSVC_FORCE_DEFAULT_ARGUMENTS = False -def _msvc_force_default_sdk(force=True): +def _msvc_force_default_sdk(force: bool=True) -> None: global _MSVC_FORCE_DEFAULT_SDK _MSVC_FORCE_DEFAULT_SDK = force debug('_MSVC_FORCE_DEFAULT_SDK=%s', repr(force)) -def _msvc_force_default_toolset(force=True): +def _msvc_force_default_toolset(force: bool=True) -> None: global _MSVC_FORCE_DEFAULT_TOOLSET _MSVC_FORCE_DEFAULT_TOOLSET = force debug('_MSVC_FORCE_DEFAULT_TOOLSET=%s', repr(force)) @@ -227,7 +227,7 @@ def _msvc_script_argument_uwp(env, msvc, arglist): return uwp_arg -def _user_script_argument_uwp(env, uwp, user_argstr): +def _user_script_argument_uwp(env, uwp, user_argstr) -> bool: matches = [m for m in re_vcvars_uwp.finditer(user_argstr)] if not matches: @@ -331,7 +331,7 @@ def _msvc_script_argument_sdk(env, msvc, toolset, platform_def, arglist): return sdk_version -def _msvc_script_default_sdk(env, msvc, platform_def, arglist, force_sdk=False): +def _msvc_script_default_sdk(env, msvc, platform_def, arglist, force_sdk: bool=False): if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2015.vc_buildtools_def.vc_version_numeric: return None @@ -390,7 +390,7 @@ def _msvc_have140_toolset(): return _toolset_have140_cache -def _reset_have140_cache(): +def _reset_have140_cache() -> None: global _toolset_have140_cache debug('reset: cache') _toolset_have140_cache = None @@ -520,7 +520,7 @@ def _msvc_read_toolset_default(msvc, vc_dir): _toolset_version_cache = {} _toolset_default_cache = {} -def _reset_toolset_cache(): +def _reset_toolset_cache() -> None: global _toolset_version_cache global _toolset_default_cache debug('reset: toolset cache') @@ -686,7 +686,7 @@ def _msvc_script_argument_toolset(env, msvc, vc_dir, arglist): return toolset_vcvars -def _msvc_script_default_toolset(env, msvc, vc_dir, arglist, force_toolset=False): +def _msvc_script_default_toolset(env, msvc, vc_dir, arglist, force_toolset: bool=False): if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2017.vc_buildtools_def.vc_version_numeric: return None @@ -853,7 +853,7 @@ def _msvc_script_argument_user(env, msvc, arglist): return script_args -def _msvc_process_construction_variables(env): +def _msvc_process_construction_variables(env) -> bool: for cache_variable in [ _MSVC_FORCE_DEFAULT_TOOLSET, @@ -982,7 +982,7 @@ def _msvc_toolset_internal(msvc_version, toolset_version, vc_dir): return toolset_vcvars -def _msvc_toolset_versions_internal(msvc_version, vc_dir, full=True, sxs=False): +def _msvc_toolset_versions_internal(msvc_version, vc_dir, full: bool=True, sxs: bool=False): msvc = _msvc_version(msvc_version) @@ -1020,12 +1020,12 @@ def _msvc_toolset_versions_spectre_internal(msvc_version, vc_dir): return spectre_toolset_versions -def reset(): +def reset() -> None: debug('') _reset_have140_cache() _reset_toolset_cache() -def verify(): +def verify() -> None: debug('') _verify_re_sdk_dispatch_map() diff --git a/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py b/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py index 441325653..670576b04 100644 --- a/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py +++ b/SCons/Tool/MSCommon/MSVC/ScriptArgumentsTests.py @@ -147,13 +147,13 @@ class Data: ) @classmethod - def msvc_sdk_version_list_components(cls, msvc_version, msvc_uwp_app=False): + def msvc_sdk_version_list_components(cls, msvc_version, msvc_uwp_app: bool=False): comps_dict = cls.SDK_VERSIONS_COMPS_DICT.get(msvc_version, {}) comps_list = comps_dict.get(msvc_uwp_app, []) return comps_list @classmethod - def msvc_sdk_version(cls, msvc_version, msvc_uwp_app=False): + def msvc_sdk_version(cls, msvc_version, msvc_uwp_app: bool=False): comps_dict = cls.SDK_VERSIONS_COMPS_DICT.get(msvc_version, {}) comps_list = comps_dict.get(msvc_uwp_app, []) if not comps_list: @@ -163,7 +163,7 @@ class Data: return sdk_version @classmethod - def msvc_sdk_notfound_version(cls, msvc_version, msvc_uwp_app=False): + def msvc_sdk_notfound_version(cls, msvc_version, msvc_uwp_app: bool=False): notfound_dict = cls.SDK_VERSIONS_NOTFOUND_DICT.get(msvc_version, {}) notfound_list = notfound_dict.get(msvc_uwp_app, []) if not notfound_list: @@ -201,19 +201,19 @@ class Patch: return hook @classmethod - def restore(cls): + def restore(cls) -> None: Config.MSVC_SDK_VERSIONS = cls.MSVC_SDK_VERSIONS class ScriptArgumentsTests(unittest.TestCase): - def test_verify(self): + def test_verify(self) -> None: MSVC_SDK_VERSIONS = Patch.Config.MSVC_SDK_VERSIONS.enable_copy() MSVC_SDK_VERSIONS.add('99.0') with self.assertRaises(MSVCInternalError): ScriptArguments.verify() Patch.Config.MSVC_SDK_VERSIONS.restore() - def test_msvc_script_arguments_defaults(self): + def test_msvc_script_arguments_defaults(self) -> None: func = ScriptArguments.msvc_script_arguments env = Environment() # disable forcing sdk and toolset versions as arguments @@ -244,7 +244,7 @@ class ScriptArgumentsTests(unittest.TestCase): # restore forcing sdk and toolset versions as arguments ScriptArguments.msvc_force_default_arguments(force=force) - def test_msvc_toolset_versions_internal(self): + def test_msvc_toolset_versions_internal(self) -> None: func = ScriptArguments._msvc_toolset_versions_internal for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS: for full in (True, False): @@ -267,7 +267,7 @@ class ScriptArgumentsTests(unittest.TestCase): func.__name__, repr(version_def.msvc_version), repr(vc_dir), repr(full), repr(sxs) )) - def test_msvc_toolset_internal(self): + def test_msvc_toolset_internal(self) -> None: if not Data.HAVE_MSVC: return func = ScriptArguments._msvc_toolset_internal @@ -278,7 +278,7 @@ class ScriptArgumentsTests(unittest.TestCase): for toolset_version in toolset_versions: _ = func(version_def.msvc_version, toolset_version, vc_dir) - def run_msvc_script_args_none(self): + def run_msvc_script_args_none(self) -> None: func = ScriptArguments.msvc_script_arguments for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS: for kwargs in [ @@ -291,7 +291,7 @@ class ScriptArgumentsTests(unittest.TestCase): env = Environment(**kwargs) _ = func(env, version_def.msvc_version, vc_dir, '') - def run_msvc_script_args(self): + def run_msvc_script_args(self) -> None: func = ScriptArguments.msvc_script_arguments for version_def, vc_dir in Data.INSTALLED_VERSIONS_PAIRS: if version_def.msvc_vernum >= 14.1: @@ -565,7 +565,7 @@ class ScriptArgumentsTests(unittest.TestCase): with self.assertRaises(MSVCArgumentError): _ = func(env, version_def.msvc_version, vc_dir, '') - def test_msvc_script_args_none(self): + def test_msvc_script_args_none(self) -> None: force = ScriptArguments.msvc_force_default_arguments(force=False) self.run_msvc_script_args_none() if Data.HAVE_MSVC: @@ -573,14 +573,14 @@ class ScriptArgumentsTests(unittest.TestCase): self.run_msvc_script_args_none() ScriptArguments.msvc_force_default_arguments(force=force) - def test_msvc_script_args(self): + def test_msvc_script_args(self) -> None: force = ScriptArguments.msvc_force_default_arguments(force=False) self.run_msvc_script_args() ScriptArguments.msvc_force_default_arguments(force=True) self.run_msvc_script_args() ScriptArguments.msvc_force_default_arguments(force=force) - def test_reset(self): + def test_reset(self) -> None: ScriptArguments.reset() self.assertTrue(ScriptArguments._toolset_have140_cache is None, "ScriptArguments._toolset_have140_cache was not reset") self.assertFalse(ScriptArguments._toolset_version_cache, "ScriptArguments._toolset_version_cache was not reset") diff --git a/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py b/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py index e1c05bc1b..34e60ab19 100644 --- a/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py +++ b/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py @@ -54,7 +54,7 @@ class _Data: need_init = True @classmethod - def reset(cls): + def reset(cls) -> None: debug('msvc default:init') cls.n_setup = 0 # number of calls to msvc_setup_env_once cls.default_ismsvc = False # is msvc the default compiler @@ -65,7 +65,7 @@ class _Data: cls.msvc_nodefault = False # is there a default version of msvc cls.need_init = True # reset initialization indicator -def _initialize(env, msvc_exists_func): +def _initialize(env, msvc_exists_func) -> None: if _Data.need_init: _Data.reset() _Data.need_init = False @@ -88,7 +88,7 @@ def register_tool(env, tool, msvc_exists_func): _Data.msvc_tools.add(tool) debug('msvc default:tool=%s, msvc_tools=%s', tool, _Data.msvc_tools) -def register_setup(env, msvc_exists_func): +def register_setup(env, msvc_exists_func) -> None: if _Data.need_init: _initialize(env, msvc_exists_func) _Data.n_setup += 1 @@ -106,7 +106,7 @@ def register_setup(env, msvc_exists_func): _Data.n_setup, _Data.msvc_installed, _Data.default_ismsvc ) -def set_nodefault(): +def set_nodefault() -> None: # default msvc version, msvc not installed _Data.msvc_nodefault = True debug('msvc default:msvc_nodefault=%s', _Data.msvc_nodefault) @@ -227,7 +227,7 @@ def register_iserror(env, tool, msvc_exists_func): # return tool list in order presented return tools_found_list -def reset(): +def reset() -> None: debug('') _Data.reset() diff --git a/SCons/Tool/MSCommon/MSVC/UtilTests.py b/SCons/Tool/MSCommon/MSVC/UtilTests.py index 5e14d506d..36e08f5eb 100644 --- a/SCons/Tool/MSCommon/MSVC/UtilTests.py +++ b/SCons/Tool/MSCommon/MSVC/UtilTests.py @@ -39,7 +39,7 @@ class Data: class UtilTests(unittest.TestCase): - def test_listdir_dirs(self): + def test_listdir_dirs(self) -> None: func = Util.listdir_dirs for dirname, expect in [ (None, False), ('', False), ('doesnotexist.xyz.abc', False), @@ -50,7 +50,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(dirname), 'list is empty' if expect else 'list is not empty' )) - def test_process_path(self): + def test_process_path(self) -> None: func = Util.process_path for p, expect in [ (None, True), ('', True), @@ -61,7 +61,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(p), repr(rval) )) - def test_get_version_prefix(self): + def test_get_version_prefix(self) -> None: func = Util.get_version_prefix for version, expect in [ (None, ''), ('', ''), @@ -76,7 +76,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(version), repr(prefix), repr(expect) )) - def test_get_msvc_version_prefix(self): + def test_get_msvc_version_prefix(self) -> None: func = Util.get_msvc_version_prefix for version, expect in [ (None, ''), ('', ''), @@ -91,7 +91,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(version), repr(prefix), repr(expect) )) - def test_is_toolset_full(self): + def test_is_toolset_full(self) -> None: func = Util.is_toolset_full for toolset, expect in [ (None, False), ('', False), @@ -103,7 +103,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(toolset), repr(rval) )) - def test_is_toolset_140(self): + def test_is_toolset_140(self) -> None: func = Util.is_toolset_140 for toolset, expect in [ (None, False), ('', False), @@ -115,7 +115,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(toolset), repr(rval) )) - def test_is_toolset_sxs(self): + def test_is_toolset_sxs(self) -> None: func = Util.is_toolset_sxs for toolset, expect in [ (None, False), ('', False), @@ -127,7 +127,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(toolset), repr(rval) )) - def test_msvc_version_components(self): + def test_msvc_version_components(self) -> None: func = Util.msvc_version_components for vcver, expect in [ (None, False), ('', False), ('ABC', False), ('14', False), ('14.1.', False), ('14.16', False), @@ -145,7 +145,7 @@ class UtilTests(unittest.TestCase): func.__name__, repr(vcver) )) - def test_msvc_extended_version_components(self): + def test_msvc_extended_version_components(self) -> None: func = Util.msvc_extended_version_components # normal code paths for vcver, expect in [ @@ -184,7 +184,7 @@ class UtilTests(unittest.TestCase): )) Util.re_extended_version = save_re - def test_msvc_sdk_version_components(self): + def test_msvc_sdk_version_components(self) -> None: func = Util.msvc_sdk_version_components for vcver, expect in [ (None, False), ('', False), ('ABC', False), ('14', False), ('14.1.', False), ('14.16', False), diff --git a/SCons/Tool/MSCommon/MSVC/WinSDK.py b/SCons/Tool/MSCommon/MSVC/WinSDK.py index 6d18d0730..a5a48c465 100644 --- a/SCons/Tool/MSCommon/MSVC/WinSDK.py +++ b/SCons/Tool/MSCommon/MSVC/WinSDK.py @@ -154,7 +154,7 @@ def _sdk_81_layout(version): _sdk_map_cache = {} _sdk_cache = {} -def _reset_sdk_cache(): +def _reset_sdk_cache() -> None: global _sdk_map_cache global _sdk_cache debug('') @@ -220,7 +220,7 @@ def _sdk_map(version_list): _sdk_cache[key] = sdk_map return sdk_map -def get_msvc_platform(is_uwp=False): +def get_msvc_platform(is_uwp: bool=False): platform_def = _UWP if is_uwp else _DESKTOP return platform_def @@ -230,7 +230,7 @@ def get_sdk_version_list(vs_def, platform_def): sdk_list = sdk_map.get(platform_def.vc_platform, []) return sdk_list -def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app=False): +def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app: bool=False): debug('msvc_version=%s, msvc_uwp_app=%s', repr(msvc_version), repr(msvc_uwp_app)) sdk_versions = [] @@ -254,11 +254,11 @@ def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app=False): return sdk_versions -def reset(): +def reset() -> None: debug('') _reset_sdk_cache() -def verify(): +def verify() -> None: debug('') _verify_sdk_dispatch_map() diff --git a/SCons/Tool/MSCommon/MSVC/WinSDKTests.py b/SCons/Tool/MSCommon/MSVC/WinSDKTests.py index 2a40e9a68..10e68f3d6 100644 --- a/SCons/Tool/MSCommon/MSVC/WinSDKTests.py +++ b/SCons/Tool/MSCommon/MSVC/WinSDKTests.py @@ -47,7 +47,7 @@ class Patch: return hook @classmethod - def restore(cls): + def restore(cls) -> None: Config.MSVC_SDK_VERSIONS = cls.MSVC_SDK_VERSIONS class Registry: @@ -69,54 +69,54 @@ class Patch: return hook @classmethod - def restore(cls): + def restore(cls) -> None: Registry.sdk_query_paths = cls.sdk_query_paths class WinSDKTests(unittest.TestCase): @classmethod - def setUpClass(cls): + def setUpClass(cls) -> None: Patch.Registry.sdk_query_paths.enable_duplicate() @classmethod - def tearDownClass(cls): + def tearDownClass(cls) -> None: Patch.Registry.sdk_query_paths.restore() - def test_verify(self): + def test_verify(self) -> None: MSVC_SDK_VERSIONS = Patch.Config.MSVC_SDK_VERSIONS.enable_copy() MSVC_SDK_VERSIONS.add('99.0') with self.assertRaises(MSVCInternalError): WinSDK.verify() Patch.Config.MSVC_SDK_VERSIONS.restore() - def _run_reset(self): + def _run_reset(self) -> None: WinSDK.reset() self.assertFalse(WinSDK._sdk_map_cache, "WinSDK._sdk_map_cache was not reset") self.assertFalse(WinSDK._sdk_cache, "WinSDK._sdk_cache was not reset") - def _run_get_msvc_sdk_version_list(self): + def _run_get_msvc_sdk_version_list(self) -> None: for vcver in Config.MSVC_VERSION_SUFFIX.keys(): for msvc_uwp_app in (True, False): _ = WinSDK.get_msvc_sdk_version_list(vcver, msvc_uwp_app=msvc_uwp_app) - def _run_version_list_sdk_map(self): + def _run_version_list_sdk_map(self) -> None: for vcver in Config.MSVC_VERSION_SUFFIX.keys(): vs_def = Config.MSVC_VERSION_SUFFIX.get(vcver) if not vs_def.vc_sdk_versions: continue _ = WinSDK._version_list_sdk_map(vs_def.vc_sdk_versions) - def test_version_list_sdk_map(self): + def test_version_list_sdk_map(self) -> None: self._run_version_list_sdk_map() self._run_version_list_sdk_map() self.assertTrue(WinSDK._sdk_map_cache, "WinSDK._sdk_map_cache is empty") - def test_get_msvc_sdk_version_list(self): + def test_get_msvc_sdk_version_list(self) -> None: self._run_get_msvc_sdk_version_list() self._run_get_msvc_sdk_version_list() self.assertTrue(WinSDK._sdk_cache, "WinSDK._sdk_cache is empty") - def test_get_msvc_sdk_version_list_empty(self): + def test_get_msvc_sdk_version_list_empty(self) -> None: func = WinSDK.get_msvc_sdk_version_list for vcver in [None, '', '99', '99.9']: sdk_versions = func(vcver) @@ -124,7 +124,7 @@ class WinSDKTests(unittest.TestCase): func.__name__, repr(vcver) )) - def test_reset(self): + def test_reset(self) -> None: self._run_reset() if __name__ == "__main__": diff --git a/SCons/Tool/MSCommon/MSVC/__init__.py b/SCons/Tool/MSCommon/MSVC/__init__.py index 849c82d14..766894d9b 100644 --- a/SCons/Tool/MSCommon/MSVC/__init__.py +++ b/SCons/Tool/MSCommon/MSVC/__init__.py @@ -47,9 +47,9 @@ from . import ScriptArguments # noqa: F401 from . import Dispatcher as _Dispatcher -def _reset(): +def _reset() -> None: _Dispatcher.reset() -def _verify(): +def _verify() -> None: _Dispatcher.verify() diff --git a/SCons/Tool/MSCommon/arch.py b/SCons/Tool/MSCommon/arch.py index 6648bb6b6..e52687369 100644 --- a/SCons/Tool/MSCommon/arch.py +++ b/SCons/Tool/MSCommon/arch.py @@ -30,7 +30,7 @@ class ArchDefinition: """ A class for defining architecture-specific settings and logic. """ - def __init__(self, arch, synonyms=[]): + def __init__(self, arch, synonyms=[]) -> None: self.arch = arch self.synonyms = synonyms diff --git a/SCons/Tool/MSCommon/common.py b/SCons/Tool/MSCommon/common.py index ad4c827d3..185ccdf53 100644 --- a/SCons/Tool/MSCommon/common.py +++ b/SCons/Tool/MSCommon/common.py @@ -68,7 +68,7 @@ if LOGFILE: class _Debug_Filter(logging.Filter): # custom filter for module relative filename - def filter(self, record): + def filter(self, record) -> bool: relfilename = get_relative_filename(record.pathname, modulelist) relfilename = relfilename.replace('\\', '/') record.relfilename = relfilename @@ -138,7 +138,7 @@ def read_script_env_cache(): return envcache -def write_script_env_cache(cache): +def write_script_env_cache(cache) -> None: """ write out cache of msvc env vars if requested """ if CONFIG_CACHE: try: @@ -209,7 +209,7 @@ def has_reg(value): # Functions for fetching environment variable settings from batch files. -def normalize_env(env, keys, force=False): +def normalize_env(env, keys, force: bool=False): """Given a dictionary representing a shell environment, add the variables from os.environ needed for the processing of .bat files; the keys are controlled by the keys argument. @@ -369,7 +369,7 @@ def parse_output(output, keep=KEEPLIST): for i in keep: rdk[i] = re.compile('%s=(.*)' % i, re.I) - def add_env(rmatch, key, dkeep=dkeep): + def add_env(rmatch, key, dkeep=dkeep) -> None: path_list = rmatch.group(1).split(os.pathsep) for path in path_list: # Do not add empty paths (when a var ends with ;) diff --git a/SCons/Tool/MSCommon/sdk.py b/SCons/Tool/MSCommon/sdk.py index aa94f4d65..fd0892c8f 100644 --- a/SCons/Tool/MSCommon/sdk.py +++ b/SCons/Tool/MSCommon/sdk.py @@ -59,7 +59,7 @@ class SDKDefinition: """ An abstract base class for trying to find installed SDK directories. """ - def __init__(self, version, **kw): + def __init__(self, version, **kw) -> None: self.version = version self.__dict__.update(kw) @@ -130,7 +130,7 @@ class WindowsSDK(SDKDefinition): A subclass for trying to find installed Windows SDK directories. """ HKEY_FMT = r'Software\Microsoft\Microsoft SDKs\Windows\v%s\InstallationFolder' - def __init__(self, *args, **kw): + def __init__(self, *args, **kw) -> None: super().__init__(*args, **kw) self.hkey_data = self.version @@ -139,7 +139,7 @@ class PlatformSDK(SDKDefinition): A subclass for trying to find installed Platform SDK directories. """ HKEY_FMT = r'Software\Microsoft\MicrosoftSDK\InstalledSDKS\%s\Install Dir' - def __init__(self, *args, **kw): + def __init__(self, *args, **kw) -> None: super().__init__(*args, **kw) self.hkey_data = self.uuid @@ -306,7 +306,7 @@ def get_installed_sdks(): SDKEnvironmentUpdates = {} -def set_sdk_by_directory(env, sdk_dir): +def set_sdk_by_directory(env, sdk_dir) -> None: global SDKEnvironmentUpdates debug('set_sdk_by_directory: Using dir:%s', sdk_dir) try: diff --git a/SCons/Tool/MSCommon/vc.py b/SCons/Tool/MSCommon/vc.py index 787194062..1dc6b8d11 100644 --- a/SCons/Tool/MSCommon/vc.py +++ b/SCons/Tool/MSCommon/vc.py @@ -455,7 +455,7 @@ def get_native_host_platform(): return _native_host_platform -def get_host_target(env, msvc_version, all_host_targets=False): +def get_host_target(env, msvc_version, all_host_targets: bool=False): vernum = float(get_msvc_version_numeric(msvc_version)) @@ -823,7 +823,7 @@ __INSTALLED_VCS_RUN = None _VC_TOOLS_VERSION_FILE_PATH = ['Auxiliary', 'Build', 'Microsoft.VCToolsVersion.default.txt'] _VC_TOOLS_VERSION_FILE = os.sep.join(_VC_TOOLS_VERSION_FILE_PATH) -def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version): +def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version) -> bool: """Return status of finding a cl.exe to use. Locates cl in the vc_dir depending on TARGET_ARCH, HOST_ARCH and the @@ -963,7 +963,7 @@ def get_installed_vcs(env=None): __INSTALLED_VCS_RUN = installed_versions return __INSTALLED_VCS_RUN -def reset_installed_vcs(): +def reset_installed_vcs() -> None: """Make it try again to find VC. This is just for the tests.""" global __INSTALLED_VCS_RUN __INSTALLED_VCS_RUN = None @@ -1099,7 +1099,7 @@ def get_default_version(env): return msvc_version -def msvc_setup_env_once(env, tool=None): +def msvc_setup_env_once(env, tool=None) -> None: try: has_run = env["MSVC_SETUP_RUN"] except KeyError: @@ -1340,7 +1340,7 @@ def msvc_setup_env_tool(env=None, version=None, tool=None): rval = True return rval -def msvc_sdk_versions(version=None, msvc_uwp_app=False): +def msvc_sdk_versions(version=None, msvc_uwp_app: bool=False): debug('version=%s, msvc_uwp_app=%s', repr(version), repr(msvc_uwp_app)) rval = [] @@ -1360,7 +1360,7 @@ def msvc_sdk_versions(version=None, msvc_uwp_app=False): rval = MSVC.WinSDK.get_msvc_sdk_version_list(version, msvc_uwp_app) return rval -def msvc_toolset_versions(msvc_version=None, full=True, sxs=False): +def msvc_toolset_versions(msvc_version=None, full: bool=True, sxs: bool=False): debug('msvc_version=%s, full=%s, sxs=%s', repr(msvc_version), repr(full), repr(sxs)) env = None @@ -1410,7 +1410,7 @@ def msvc_toolset_versions_spectre(msvc_version=None): rval = MSVC.ScriptArguments._msvc_toolset_versions_spectre_internal(msvc_version, vc_dir) return rval -def msvc_query_version_toolset(version=None, prefer_newest=True): +def msvc_query_version_toolset(version=None, prefer_newest: bool=True): """ Returns an msvc version and a toolset version given a version specification. diff --git a/SCons/Tool/MSCommon/vcTests.py b/SCons/Tool/MSCommon/vcTests.py index 3e37def2e..c4cf2af69 100644 --- a/SCons/Tool/MSCommon/vcTests.py +++ b/SCons/Tool/MSCommon/vcTests.py @@ -47,12 +47,12 @@ MS_TOOLS_VERSION = '1.1.1' class VswhereTestCase(unittest.TestCase): @staticmethod - def _createVSWhere(path): + def _createVSWhere(path) -> None: os.makedirs(os.path.dirname(path), exist_ok=True) with open(path, 'w') as f: f.write("Created:%s" % f) - def testDefaults(self): + def testDefaults(self) -> None: """ Verify that msvc_find_vswhere() find's files in the specified paths """ @@ -75,7 +75,7 @@ class VswhereTestCase(unittest.TestCase): class MSVcTestCase(unittest.TestCase): @staticmethod - def _createDummyCl(path, add_bin=True): + def _createDummyCl(path, add_bin: bool=True) -> None: """ Creates a dummy cl.exe in the correct directory. It will create all missing parent directories as well @@ -101,7 +101,7 @@ class MSVcTestCase(unittest.TestCase): ct.write('created') - def runTest(self): + def runTest(self) -> None: """ Check that all proper HOST_PLATFORM and TARGET_PLATFORM are handled. Verify that improper HOST_PLATFORM and/or TARGET_PLATFORM are properly handled. @@ -307,13 +307,13 @@ class Patch: return hook @classmethod - def restore(cls): + def restore(cls) -> None: MSCommon.vc.msvc_default_version = cls.msvc_default_version class MsvcSdkVersionsTests(unittest.TestCase): """Test msvc_sdk_versions""" - def run_valid_default_msvc(self): + def run_valid_default_msvc(self) -> None: symbol = MSCommon.vc.msvc_default_version() version_def = MSCommon.msvc_version_components(symbol) for msvc_uwp_app in (True, False): @@ -323,14 +323,14 @@ class MsvcSdkVersionsTests(unittest.TestCase): else: self.assertFalse(sdk_list, "SDK list is not empty for msvc version {}".format(repr(None))) - def test_valid_default_msvc(self): + def test_valid_default_msvc(self) -> None: if Data.HAVE_MSVC: Patch.MSCommon.vc.msvc_default_version.enable_none() self.run_valid_default_msvc() Patch.MSCommon.vc.msvc_default_version.restore() self.run_valid_default_msvc() - def test_valid_vcver(self): + def test_valid_vcver(self) -> None: for symbol in MSCommon.vc._VCVER: version_def = MSCommon.msvc_version_components(symbol) for msvc_uwp_app in (True, False): @@ -340,7 +340,7 @@ class MsvcSdkVersionsTests(unittest.TestCase): else: self.assertFalse(sdk_list, "SDK list is not empty for msvc version {}".format(repr(symbol))) - def test_valid_vcver_toolsets(self): + def test_valid_vcver_toolsets(self) -> None: for symbol in MSCommon.vc._VCVER: toolset_list = MSCommon.vc.msvc_toolset_versions(msvc_version=symbol, full=True, sxs=True) if toolset_list is None: @@ -354,13 +354,13 @@ class MsvcSdkVersionsTests(unittest.TestCase): ) self.assertTrue(sdk_list, "SDK list is empty for msvc toolset version {}".format(repr(toolset))) - def test_invalid_vcver(self): + def test_invalid_vcver(self) -> None: for symbol in ['6.0Exp', '14.3Exp', '99', '14.1Bug']: for msvc_uwp_app in (True, False): with self.assertRaises(MSCommon.vc.MSVCArgumentError): _ = MSCommon.vc.msvc_sdk_versions(version=symbol, msvc_uwp_app=msvc_uwp_app) - def test_invalid_vcver_toolsets(self): + def test_invalid_vcver_toolsets(self) -> None: for symbol in ['14.31.123456', '14.31.1.1']: for msvc_uwp_app in (True, False): with self.assertRaises(MSCommon.vc.MSVCArgumentError): @@ -369,7 +369,7 @@ class MsvcSdkVersionsTests(unittest.TestCase): class MsvcToolsetVersionsTests(unittest.TestCase): """Test msvc_toolset_versions""" - def run_valid_default_msvc(self): + def run_valid_default_msvc(self) -> None: symbol = MSCommon.vc.msvc_default_version() version_def = MSCommon.msvc_version_components(symbol) toolset_none_list = MSCommon.vc.msvc_toolset_versions(msvc_version=None, full=False, sxs=False) @@ -386,14 +386,14 @@ class MsvcToolsetVersionsTests(unittest.TestCase): self.assertFalse(toolset_all_list, "Toolset all list is not empty for msvc version {}".format(repr(None))) self.assertFalse(toolset_none_list, "Toolset none list is not empty for msvc version {}".format(repr(None))) - def test_valid_default_msvc(self): + def test_valid_default_msvc(self) -> None: if Data.HAVE_MSVC: Patch.MSCommon.vc.msvc_default_version.enable_none() self.run_valid_default_msvc() Patch.MSCommon.vc.msvc_default_version.restore() self.run_valid_default_msvc() - def test_valid_vcver(self): + def test_valid_vcver(self) -> None: for symbol in MSCommon.vc._VCVER: version_def = MSCommon.msvc_version_components(symbol) toolset_none_list = MSCommon.vc.msvc_toolset_versions(msvc_version=symbol, full=False, sxs=False) @@ -410,14 +410,14 @@ class MsvcToolsetVersionsTests(unittest.TestCase): self.assertFalse(toolset_all_list, "Toolset all list is not empty for msvc version {}".format(repr(symbol))) self.assertFalse(toolset_none_list, "Toolset none list is not empty for msvc version {}".format(repr(symbol))) - def test_invalid_vcver(self): + def test_invalid_vcver(self) -> None: for symbol in ['12.9', '6.0Exp', '14.3Exp', '99', '14.1Bug']: with self.assertRaises(MSCommon.vc.MSVCArgumentError): _ = MSCommon.vc.msvc_toolset_versions(msvc_version=symbol) class MsvcToolsetVersionsSpectreTests(unittest.TestCase): - def run_valid_default_msvc(self): + def run_valid_default_msvc(self) -> None: symbol = MSCommon.vc.msvc_default_version() version_def = MSCommon.msvc_version_components(symbol) spectre_toolset_list = MSCommon.vc.msvc_toolset_versions_spectre(msvc_version=None) @@ -427,14 +427,14 @@ class MsvcToolsetVersionsSpectreTests(unittest.TestCase): else: self.assertFalse(spectre_toolset_list, "Toolset spectre list is not empty for msvc version {}".format(repr(None))) - def test_valid_default_msvc(self): + def test_valid_default_msvc(self) -> None: if Data.HAVE_MSVC: Patch.MSCommon.vc.msvc_default_version.enable_none() self.run_valid_default_msvc() Patch.MSCommon.vc.msvc_default_version.restore() self.run_valid_default_msvc() - def test_valid_vcver(self): + def test_valid_vcver(self) -> None: for symbol in MSCommon.vc._VCVER: version_def = MSCommon.msvc_version_components(symbol) spectre_toolset_list = MSCommon.vc.msvc_toolset_versions_spectre(msvc_version=symbol) @@ -444,7 +444,7 @@ class MsvcToolsetVersionsSpectreTests(unittest.TestCase): else: self.assertFalse(spectre_toolset_list, "Toolset spectre list is not empty for msvc version {}".format(repr(symbol))) - def test_invalid_vcver(self): + def test_invalid_vcver(self) -> None: for symbol in ['12.9', '6.0Exp', '14.3Exp', '99', '14.1Bug']: with self.assertRaises(MSCommon.vc.MSVCArgumentError): _ = MSCommon.vc.msvc_toolset_versions_spectre(msvc_version=symbol) @@ -452,7 +452,7 @@ class MsvcToolsetVersionsSpectreTests(unittest.TestCase): class MsvcQueryVersionToolsetTests(unittest.TestCase): """Test msvc_query_toolset_version""" - def run_valid_default_msvc(self, have_msvc): + def run_valid_default_msvc(self, have_msvc) -> None: for prefer_newest in (True, False): msvc_version, msvc_toolset_version = MSCommon.vc.msvc_query_version_toolset( version=None, prefer_newest=prefer_newest @@ -468,14 +468,14 @@ class MsvcQueryVersionToolsetTests(unittest.TestCase): repr(None) )) - def test_valid_default_msvc(self): + def test_valid_default_msvc(self) -> None: if Data.HAVE_MSVC: Patch.MSCommon.vc.msvc_default_version.enable_none() self.run_valid_default_msvc(have_msvc=False) Patch.MSCommon.vc.msvc_default_version.restore() self.run_valid_default_msvc(have_msvc=Data.HAVE_MSVC) - def test_valid_vcver(self): + def test_valid_vcver(self) -> None: for symbol in MSCommon.vc._VCVER: version_def = MSCommon.msvc_version_components(symbol) for prefer_newest in (True, False): @@ -489,7 +489,7 @@ class MsvcQueryVersionToolsetTests(unittest.TestCase): repr(symbol) )) - def test_valid_vcver_toolsets(self): + def test_valid_vcver_toolsets(self) -> None: for symbol in MSCommon.vc._VCVER: toolset_list = MSCommon.vc.msvc_toolset_versions(msvc_version=symbol, full=True, sxs=True) if toolset_list is None: @@ -508,7 +508,7 @@ class MsvcQueryVersionToolsetTests(unittest.TestCase): repr(toolset) )) - def test_msvc_query_version_toolset_notfound(self): + def test_msvc_query_version_toolset_notfound(self) -> None: toolset_notfound_dict = Data.msvc_toolset_notfound_dict() for toolset_notfound_list in toolset_notfound_dict.values(): for toolset in toolset_notfound_list[:1]: @@ -516,13 +516,13 @@ class MsvcQueryVersionToolsetTests(unittest.TestCase): with self.assertRaises(MSCommon.vc.MSVCToolsetVersionNotFound): _ = MSCommon.vc.msvc_query_version_toolset(version=toolset, prefer_newest=prefer_newest) - def test_invalid_vcver(self): + def test_invalid_vcver(self) -> None: for symbol in ['12.9', '6.0Exp', '14.3Exp', '99', '14.1Bug']: for prefer_newest in (True, False): with self.assertRaises(MSCommon.vc.MSVCArgumentError): _ = MSCommon.vc.msvc_query_version_toolset(version=symbol, prefer_newest=prefer_newest) - def test_invalid_vcver_toolsets(self): + def test_invalid_vcver_toolsets(self) -> None: for symbol in ['14.16.00000Exp', '14.00.00001', '14.31.123456', '14.31.1.1']: for prefer_newest in (True, False): with self.assertRaises(MSCommon.vc.MSVCArgumentError): diff --git a/SCons/Tool/MSCommon/vs.py b/SCons/Tool/MSCommon/vs.py index 08c3cf5af..00ccaef94 100644 --- a/SCons/Tool/MSCommon/vs.py +++ b/SCons/Tool/MSCommon/vs.py @@ -46,7 +46,7 @@ class VisualStudio: An abstract base class for trying to find installed versions of Visual Studio. """ - def __init__(self, version, **kw): + def __init__(self, version, **kw) -> None: self.version = version kw['vc_version'] = kw.get('vc_version', version) kw['sdk_version'] = kw.get('sdk_version', version) @@ -148,7 +148,7 @@ class VisualStudio: self._cache['supported_arch'] = self.supported_arch return self.supported_arch - def reset(self): + def reset(self) -> None: self._cache = {} # The list of supported Visual Studio versions we know how to detect. @@ -439,7 +439,7 @@ def get_installed_visual_studios(env=None): InstalledVSMap[vs.version] = vs return InstalledVSList -def reset_installed_visual_studios(): +def reset_installed_visual_studios() -> None: global InstalledVSList global InstalledVSMap InstalledVSList = None @@ -564,12 +564,12 @@ def get_default_arch(env): return arch -def merge_default_version(env): +def merge_default_version(env) -> None: version = get_default_version(env) arch = get_default_arch(env) # TODO: refers to versions and arch which aren't defined; called nowhere. Drop? -def msvs_setup_env(env): +def msvs_setup_env(env) -> None: msvs = get_vs_by_version(version) if msvs is None: return diff --git a/SCons/Tool/PharLapCommon.py b/SCons/Tool/PharLapCommon.py index 9ffafa9e5..e1907ab07 100644 --- a/SCons/Tool/PharLapCommon.py +++ b/SCons/Tool/PharLapCommon.py @@ -86,7 +86,7 @@ def getPharLapVersion(): # Default return for Phar Lap 9.1 return 910 -def addPharLapPaths(env): +def addPharLapPaths(env) -> None: """This function adds the path to the Phar Lap binaries, includes, and libraries, if they are not already there.""" ph_path = getPharLapPath() diff --git a/SCons/Tool/ToolTests.py b/SCons/Tool/ToolTests.py index 59d093b0e..e87a9725f 100644 --- a/SCons/Tool/ToolTests.py +++ b/SCons/Tool/ToolTests.py @@ -31,19 +31,19 @@ import SCons.Tool class DummyEnvironment: - def __init__(self): + def __init__(self) -> None: self.dict = {} def Detect(self, progs): if not SCons.Util.is_List(progs): progs = [ progs ] return progs[0] - def Append(self, **kw): + def Append(self, **kw) -> None: self.dict.update(kw) def __getitem__(self, key): return self.dict[key] - def __setitem__(self, key, val): + def __setitem__(self, key, val) -> None: self.dict[key] = val - def __contains__(self, key): + def __contains__(self, key) -> bool: return key in self.dict def subst(self, string, *args, **kwargs): return string @@ -60,13 +60,13 @@ class DummyEnvironment: if self.PHONY_PATH in paths: return os.path.join(self.PHONY_PATH, key_program) return None - def AppendENVPath(self, pathvar, path): + def AppendENVPath(self, pathvar, path) -> None: # signature matches how called from find_program_path() self['ENV'][pathvar] = self['ENV'][pathvar] + os.pathsep + path class ToolTestCase(unittest.TestCase): - def test_Tool(self): + def test_Tool(self) -> None: """Test the Tool() function""" env = DummyEnvironment() @@ -96,7 +96,7 @@ class ToolTestCase(unittest.TestCase): assert exc_caught, "did not catch expected UserError" - def test_pathfind(self): + def test_pathfind(self) -> None: """Test that find_program_path() alters PATH only if add_path is true""" env = DummyEnvironment() diff --git a/SCons/Tool/__init__.py b/SCons/Tool/__init__.py index 33c1d33ab..3681235f6 100644 --- a/SCons/Tool/__init__.py +++ b/SCons/Tool/__init__.py @@ -105,7 +105,7 @@ TOOL_ALIASES = { class Tool: - def __init__(self, name, toolpath=None, **kwargs): + def __init__(self, name, toolpath=None, **kwargs) -> None: if toolpath is None: toolpath = [] @@ -241,7 +241,7 @@ class Tool: msg = "No tool named '{self.name}': {e}" raise SCons.Errors.SConsEnvironmentError(msg) - def __call__(self, env, *args, **kw): + def __call__(self, env, *args, **kw) -> None: if self.init_kw is not None: # Merge call kws into init kws; # but don't bash self.init_kw. @@ -264,7 +264,7 @@ class Tool: self.generate(env, *args, **kw) - def __str__(self): + def __str__(self) -> str: return self.name @@ -324,7 +324,7 @@ def createStaticLibBuilder(env): return static_lib -def createSharedLibBuilder(env, shlib_suffix='$_SHLIBSUFFIX'): +def createSharedLibBuilder(env, shlib_suffix: str='$_SHLIBSUFFIX'): """This is a utility function that creates the SharedLibrary Builder in an Environment if it is not there already. @@ -354,7 +354,7 @@ def createSharedLibBuilder(env, shlib_suffix='$_SHLIBSUFFIX'): return shared_lib -def createLoadableModuleBuilder(env, loadable_module_suffix='$_LDMODULESUFFIX'): +def createLoadableModuleBuilder(env, loadable_module_suffix: str='$_LDMODULESUFFIX'): """This is a utility function that creates the LoadableModule Builder in an Environment if it is not there already. @@ -557,7 +557,7 @@ class ToolInitializerMethod: environment in place of this particular instance. """ - def __init__(self, name, initializer): + def __init__(self, name, initializer) -> None: """ Note: we store the tool name as __name__ so it can be used by the class that attaches this to a construction environment. @@ -608,7 +608,7 @@ class ToolInitializer: that we want to use to delay Tool searches until necessary. """ - def __init__(self, env, tools, names): + def __init__(self, env, tools, names) -> None: if not SCons.Util.is_List(tools): tools = [tools] if not SCons.Util.is_List(names): @@ -622,7 +622,7 @@ class ToolInitializer: self.methods[name] = method env.AddMethod(method) - def remove_methods(self, env): + def remove_methods(self, env) -> None: """ Removes the methods that were added by the tool initialization so we no longer copy and re-bind them when the construction @@ -631,7 +631,7 @@ class ToolInitializer: for method in self.methods.values(): env.RemoveMethod(method) - def apply_tools(self, env): + def apply_tools(self, env) -> None: """ Searches the list of associated Tool modules for one that exists, and applies that to the construction environment. @@ -649,7 +649,7 @@ class ToolInitializer: # the ToolInitializer class. -def Initializers(env): +def Initializers(env) -> None: ToolInitializer(env, ['install'], ['_InternalInstall', '_InternalInstallAs', '_InternalInstallVersionedLib']) def Install(self, *args, **kw): @@ -824,7 +824,7 @@ def tool_list(platform, env): return [x for x in tools if x] -def find_program_path(env, key_program, default_paths=None, add_path=False) -> Optional[str]: +def find_program_path(env, key_program, default_paths=None, add_path: bool=False) -> Optional[str]: """ Find the location of a tool using various means. diff --git a/SCons/Tool/aixcc.py b/SCons/Tool/aixcc.py index 09365b1df..ccde0a8fc 100644 --- a/SCons/Tool/aixcc.py +++ b/SCons/Tool/aixcc.py @@ -44,7 +44,7 @@ def get_xlc(env): xlc = env.get('CC', 'xlc') return SCons.Platform.aix.get_xlc(env, xlc, packages) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for xlc / Visual Age suite to an Environment.""" path, _cc, version = get_xlc(env) diff --git a/SCons/Tool/aixcxx.py b/SCons/Tool/aixcxx.py index 58d9ecca9..7b478997b 100644 --- a/SCons/Tool/aixcxx.py +++ b/SCons/Tool/aixcxx.py @@ -47,7 +47,7 @@ def get_xlc(env): xlc = env.get('CXX', 'xlC') return SCons.Platform.aix.get_xlc(env, xlc, packages) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for xlC / Visual Age suite to an Environment.""" path, _cxx, version = get_xlc(env) diff --git a/SCons/Tool/aixf77.py b/SCons/Tool/aixf77.py index 4cef908fa..33511ee9c 100644 --- a/SCons/Tool/aixf77.py +++ b/SCons/Tool/aixf77.py @@ -50,7 +50,7 @@ def get_xlf77(env): #return SCons.Platform.aix.get_xlc(env, xlf77, xlf77_r, packages) return (None, xlf77, xlf77_r, None) -def generate(env): +def generate(env) -> None: """ Add Builders and construction variables for the Visual Age FORTRAN compiler to an Environment. diff --git a/SCons/Tool/aixlink.py b/SCons/Tool/aixlink.py index dc0de2a3d..03fc3b011 100644 --- a/SCons/Tool/aixlink.py +++ b/SCons/Tool/aixlink.py @@ -48,7 +48,7 @@ def smart_linkflags(source, target, env, for_signature): return '' -def generate(env): +def generate(env) -> None: """ Add Builders and construction variables for Visual Age linker to an Environment. diff --git a/SCons/Tool/applelink.py b/SCons/Tool/applelink.py index b81d2b3cd..3dc744d46 100644 --- a/SCons/Tool/applelink.py +++ b/SCons/Tool/applelink.py @@ -79,7 +79,7 @@ def _applelib_check_valid_version(version_string): return True, "" -def _applelib_currentVersionFromSoVersion(source, target, env, for_signature): +def _applelib_currentVersionFromSoVersion(source, target, env, for_signature) -> str: """ A generator function to create the -Wl,-current_version flag if needed. If env['APPLELINK_NO_CURRENT_VERSION'] contains a true value no flag will be generated @@ -110,7 +110,7 @@ def _applelib_currentVersionFromSoVersion(source, target, env, for_signature): return "-Wl,-current_version,%s" % version_string -def _applelib_compatVersionFromSoVersion(source, target, env, for_signature): +def _applelib_compatVersionFromSoVersion(source, target, env, for_signature) -> str: """ A generator function to create the -Wl,-compatibility_version flag if needed. If env['APPLELINK_NO_COMPATIBILITY_VERSION'] contains a true value no flag will be generated @@ -141,7 +141,7 @@ def _applelib_compatVersionFromSoVersion(source, target, env, for_signature): return "-Wl,-compatibility_version,%s" % version_string -def _applelib_soname(target, source, env, for_signature): +def _applelib_soname(target, source, env, for_signature) -> str: """ Override default _soname() function from SCons.Tools.linkCommon.SharedLibrary. Apple's file naming for versioned shared libraries puts the version string before @@ -160,7 +160,7 @@ def _applelib_soname(target, source, env, for_signature): return "$SHLIBPREFIX$_get_shlib_stem$_SHLIBSOVERSION${SHLIBSUFFIX}" -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for applelink to an Environment.""" link.generate(env) diff --git a/SCons/Tool/ar.py b/SCons/Tool/ar.py index 2cd15c844..e3709273b 100644 --- a/SCons/Tool/ar.py +++ b/SCons/Tool/ar.py @@ -38,7 +38,7 @@ import SCons.Tool import SCons.Util -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ar to an Environment.""" SCons.Tool.createStaticLibBuilder(env) diff --git a/SCons/Tool/asm.py b/SCons/Tool/asm.py index c7482513b..2c9a915c9 100644 --- a/SCons/Tool/asm.py +++ b/SCons/Tool/asm.py @@ -46,7 +46,7 @@ if SCons.Util.case_sensitive_suffixes('.s', '.S'): else: ASSuffixes.extend(['.S']) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for as to an Environment.""" static_obj, shared_obj = SCons.Tool.createObjBuilders(env) diff --git a/SCons/Tool/bcc32.py b/SCons/Tool/bcc32.py index 55f871b75..5bd14f65f 100644 --- a/SCons/Tool/bcc32.py +++ b/SCons/Tool/bcc32.py @@ -44,7 +44,7 @@ def findIt(program, env): env.PrependENVPath('PATH', dir) return borwin -def generate(env): +def generate(env) -> None: findIt('bcc32', env) """Add Builders and construction variables for bcc to an Environment.""" diff --git a/SCons/Tool/cc.py b/SCons/Tool/cc.py index 590ec5fd3..e9cbe530b 100644 --- a/SCons/Tool/cc.py +++ b/SCons/Tool/cc.py @@ -40,7 +40,7 @@ CSuffixes = ['.c', '.m'] if not SCons.Util.case_sensitive_suffixes('.c', '.C'): CSuffixes.append('.C') -def add_common_cc_variables(env): +def add_common_cc_variables(env) -> None: """ Add underlying common "C compiler" variables that are used by multiple tools (specifically, c++). @@ -64,7 +64,7 @@ def add_common_cc_variables(env): compilers = ['cc'] -def generate(env): +def generate(env) -> None: """ Add Builders and construction variables for C compilers to an Environment. """ diff --git a/SCons/Tool/clang.py b/SCons/Tool/clang.py index 518b09ed0..1cef0ad19 100644 --- a/SCons/Tool/clang.py +++ b/SCons/Tool/clang.py @@ -44,7 +44,7 @@ from SCons.Tool.MSCommon import msvc_setup_env_once compilers = ['clang'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for clang to an Environment.""" SCons.Tool.cc.generate(env) diff --git a/SCons/Tool/clangxx.py b/SCons/Tool/clangxx.py index 07d8378e3..5f8202c84 100644 --- a/SCons/Tool/clangxx.py +++ b/SCons/Tool/clangxx.py @@ -44,7 +44,7 @@ from SCons.Tool.MSCommon import msvc_setup_env_once compilers = ['clang++'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for clang++ to an Environment.""" static_obj, shared_obj = SCons.Tool.createObjBuilders(env) diff --git a/SCons/Tool/compilation_db.py b/SCons/Tool/compilation_db.py index a4954c1de..14c6ef59c 100644 --- a/SCons/Tool/compilation_db.py +++ b/SCons/Tool/compilation_db.py @@ -51,12 +51,12 @@ __COMPILATION_DB_ENTRIES = [] # We make no effort to avoid rebuilding the entries. Someday, perhaps we could and even # integrate with the cache, but there doesn't seem to be much call for it. class __CompilationDbNode(SCons.Node.Python.Value): - def __init__(self, value): + def __init__(self, value) -> None: SCons.Node.Python.Value.__init__(self, value) self.Decider(changed_since_last_build_node) -def changed_since_last_build_node(child, target, prev_ni, node): +def changed_since_last_build_node(child, target, prev_ni, node) -> bool: """ Dummy decider to force always building""" return True @@ -111,7 +111,7 @@ class CompDBTEMPFILE(TempFileMunge): return self.cmd -def compilation_db_entry_action(target, source, env, **kw): +def compilation_db_entry_action(target, source, env, **kw) -> None: """ Create a dictionary with evaluated command line, target, source and store that info as an attribute on the target @@ -140,7 +140,7 @@ def compilation_db_entry_action(target, source, env, **kw): target[0].write(entry) -def write_compilation_db(target, source, env): +def write_compilation_db(target, source, env) -> None: entries = [] use_abspath = env['COMPILATIONDB_USE_ABSPATH'] in [True, 1, 'True', 'true'] @@ -197,7 +197,7 @@ def compilation_db_emitter(target, source, env): return target, source -def generate(env, **kwargs): +def generate(env, **kwargs) -> None: static_obj, shared_obj = SCons.Tool.createObjBuilders(env) env["COMPILATIONDB_COMSTR"] = kwargs.get( @@ -261,5 +261,5 @@ def generate(env, **kwargs): env['COMPILATIONDB_PATH_FILTER'] = '' -def exists(env): +def exists(env) -> bool: return True diff --git a/SCons/Tool/cvf.py b/SCons/Tool/cvf.py index 47e733ebd..0dc74ade3 100644 --- a/SCons/Tool/cvf.py +++ b/SCons/Tool/cvf.py @@ -33,7 +33,7 @@ from . import fortran compilers = ['f90'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for compaq visual fortran to an Environment.""" fortran.generate(env) diff --git a/SCons/Tool/cxx.py b/SCons/Tool/cxx.py index 128cdc4f6..bf4bcceff 100644 --- a/SCons/Tool/cxx.py +++ b/SCons/Tool/cxx.py @@ -39,7 +39,7 @@ CXXSuffixes = ['.cpp', '.cc', '.cxx', '.c++', '.C++', '.mm'] if SCons.Util.case_sensitive_suffixes('.c', '.C'): CXXSuffixes.append('.C') -def iscplusplus(source): +def iscplusplus(source) -> int: if not source: # Source might be None for unusual cases like SConf. return 0 @@ -50,7 +50,7 @@ def iscplusplus(source): return 1 return 0 -def generate(env): +def generate(env) -> None: """ Add Builders and construction variables for Visual Age C++ compilers to an Environment. diff --git a/SCons/Tool/cyglink.py b/SCons/Tool/cyglink.py index bb5cd1035..0d1eb51a4 100644 --- a/SCons/Tool/cyglink.py +++ b/SCons/Tool/cyglink.py @@ -134,7 +134,7 @@ def cyglink_ldmodule_version(target, source, env, for_signature): return "." + version -def _implib_pre_flags(target, source, env, for_signature): +def _implib_pre_flags(target, source, env, for_signature) -> str: no_import_lib = env.get('no_import_lib', False) if no_import_lib in ['1', 'True', 'true', True]: return '' @@ -142,7 +142,7 @@ def _implib_pre_flags(target, source, env, for_signature): return '-Wl,--out-implib=${TARGETS[1]} -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive' -def _implib_post_flags(target, source, env, for_signature): +def _implib_post_flags(target, source, env, for_signature) -> str: no_import_lib = env.get('no_import_lib', False) if no_import_lib in ['1', 'True', 'true', True]: return '' @@ -150,7 +150,7 @@ def _implib_post_flags(target, source, env, for_signature): return '-Wl,--no-whole-archive' -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for cyglink to an Environment.""" gnulink.generate(env) diff --git a/SCons/Tool/default.py b/SCons/Tool/default.py index a36e9ec1c..4b386e2e1 100644 --- a/SCons/Tool/default.py +++ b/SCons/Tool/default.py @@ -35,12 +35,12 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import SCons.Tool -def generate(env): +def generate(env) -> None: """Add default tools.""" for t in SCons.Tool.tool_list(env['PLATFORM'], env): SCons.Tool.Tool(t)(env) -def exists(env): +def exists(env) -> int: return 1 # Local Variables: diff --git a/SCons/Tool/dmd.py b/SCons/Tool/dmd.py index 67ed43eda..7b2a24962 100644 --- a/SCons/Tool/dmd.py +++ b/SCons/Tool/dmd.py @@ -82,7 +82,7 @@ import SCons.Tool import SCons.Tool.DCommon as DCommon -def generate(env): +def generate(env) -> None: static_obj, shared_obj = SCons.Tool.createObjBuilders(env) static_obj.add_action('.d', SCons.Defaults.DAction) diff --git a/SCons/Tool/docbook/__init__.py b/SCons/Tool/docbook/__init__.py index 52e291144..53505eb7c 100644 --- a/SCons/Tool/docbook/__init__.py +++ b/SCons/Tool/docbook/__init__.py @@ -72,7 +72,7 @@ re_refname = re.compile(r"<refname>([^<]*)</refname>") lmxl_xslt_global_max_depth = 3600 if has_lxml and lmxl_xslt_global_max_depth: - def __lxml_xslt_set_global_max_depth(max_depth): + def __lxml_xslt_set_global_max_depth(max_depth) -> None: from lxml import etree etree.XSLT.set_global_max_depth(max_depth) __lxml_xslt_set_global_max_depth(lmxl_xslt_global_max_depth) @@ -93,7 +93,7 @@ def __extend_targets_sources(target, source): return target, source -def __init_xsl_stylesheet(kw, env, user_xsl_var, default_path): +def __init_xsl_stylesheet(kw, env, user_xsl_var, default_path) -> None: if kw.get('DOCBOOK_XSL','') == '': xsl_style = kw.get('xsl', env.subst(user_xsl_var)) if xsl_style == '': @@ -137,7 +137,7 @@ def __get_xml_text(root): txt += e.data return txt -def __create_output_dir(base_dir): +def __create_output_dir(base_dir) -> None: """ Ensure that the output directory base_dir exists. """ root, tail = os.path.split(base_dir) dir = None @@ -173,7 +173,7 @@ fop_com = {'fop' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET', 'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf $TARGET', 'jw' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o $TARGET'} -def __detect_cl_tool(env, chainkey, cdict, cpriority=None): +def __detect_cl_tool(env, chainkey, cdict, cpriority=None) -> None: """ Helper function, picks a command line tool from the list and initializes its environment variables. @@ -195,7 +195,7 @@ def __detect_cl_tool(env, chainkey, cdict, cpriority=None): env[chainkey + 'COM'] = cdict[cltool] break -def _detect(env): +def _detect(env) -> None: """ Detect all the command line tools that we might need for creating the requested output formats. @@ -420,7 +420,7 @@ def DocbookEpub(env, target, source=None, *args, **kw): import zipfile import shutil - def build_open_container(target, source, env): + def build_open_container(target, source, env) -> None: """Generate the *.epub file from intermediate outputs Constructs the epub file according to the Open Container Format. This @@ -444,7 +444,7 @@ def DocbookEpub(env, target, source=None, *args, **kw): zf.write(path, os.path.relpath(path, str(env.get('ZIPROOT', ''))), zipfile.ZIP_DEFLATED) - def add_resources(target, source, env): + def add_resources(target, source, env) -> None: """Add missing resources to the OEBPS directory Ensure all the resources in the manifest are present in the OEBPS directory. @@ -789,7 +789,7 @@ def DocbookXslt(env, target, source=None, *args, **kw): return result -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for docbook to an Environment.""" env.SetDefault( @@ -839,5 +839,5 @@ def generate(env): env.AddMethod(DocbookXslt, "DocbookXslt") -def exists(env): +def exists(env) -> int: return 1 diff --git a/SCons/Tool/dvi.py b/SCons/Tool/dvi.py index 4067b2a1e..a395d2b39 100644 --- a/SCons/Tool/dvi.py +++ b/SCons/Tool/dvi.py @@ -34,7 +34,7 @@ import SCons.Tool DVIBuilder = None -def generate(env): +def generate(env) -> None: try: env['BUILDERS']['DVI'] except KeyError: @@ -52,7 +52,7 @@ def generate(env): env['BUILDERS']['DVI'] = DVIBuilder -def exists(env): +def exists(env) -> int: # This only puts a skeleton Builder in place, so if someone # references this Tool directly, it's always "available." return 1 diff --git a/SCons/Tool/dvipdf.py b/SCons/Tool/dvipdf.py index e0622072d..c08bf07f6 100644 --- a/SCons/Tool/dvipdf.py +++ b/SCons/Tool/dvipdf.py @@ -85,12 +85,12 @@ def PDFEmitter(target, source, env): used to generate the .dvi file we're using as input, and we only care about the .dvi file. """ - def strip_suffixes(n): + def strip_suffixes(n) -> bool: return not SCons.Util.splitext(str(n))[1] in ['.aux', '.log'] source = [src for src in source if strip_suffixes(src)] return (target, source) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for dvipdf to an Environment.""" global PDFAction if PDFAction is None: diff --git a/SCons/Tool/dvips.py b/SCons/Tool/dvips.py index 198bda038..7cf717b8d 100644 --- a/SCons/Tool/dvips.py +++ b/SCons/Tool/dvips.py @@ -55,7 +55,7 @@ PSAction = None DVIPSAction = None PSBuilder = None -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for dvips to an Environment.""" global PSAction if PSAction is None: diff --git a/SCons/Tool/f03.py b/SCons/Tool/f03.py index 142c1278b..7c2f029a5 100644 --- a/SCons/Tool/f03.py +++ b/SCons/Tool/f03.py @@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f03_to_env compilers = ['f03'] -def generate(env): +def generate(env) -> None: add_all_to_env(env) add_f03_to_env(env) diff --git a/SCons/Tool/f08.py b/SCons/Tool/f08.py index eb367c53e..30c2d72bd 100644 --- a/SCons/Tool/f08.py +++ b/SCons/Tool/f08.py @@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f08_to_env compilers = ['f08'] -def generate(env): +def generate(env) -> None: add_all_to_env(env) add_f08_to_env(env) diff --git a/SCons/Tool/f77.py b/SCons/Tool/f77.py index 5ff15ae45..c065f6cd2 100644 --- a/SCons/Tool/f77.py +++ b/SCons/Tool/f77.py @@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env compilers = ['f77'] -def generate(env): +def generate(env) -> None: add_all_to_env(env) add_f77_to_env(env) diff --git a/SCons/Tool/f90.py b/SCons/Tool/f90.py index cbf3947c1..b3dde59b8 100644 --- a/SCons/Tool/f90.py +++ b/SCons/Tool/f90.py @@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f90_to_env compilers = ['f90'] -def generate(env): +def generate(env) -> None: add_all_to_env(env) add_f90_to_env(env) diff --git a/SCons/Tool/f95.py b/SCons/Tool/f95.py index 4830ee03f..b707a115f 100644 --- a/SCons/Tool/f95.py +++ b/SCons/Tool/f95.py @@ -32,7 +32,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f95_to_env compilers = ['f95'] -def generate(env): +def generate(env) -> None: add_all_to_env(env) add_f95_to_env(env) diff --git a/SCons/Tool/filesystem.py b/SCons/Tool/filesystem.py index 3b8ee4c8f..9a977b5d7 100644 --- a/SCons/Tool/filesystem.py +++ b/SCons/Tool/filesystem.py @@ -48,7 +48,7 @@ def copyto_emitter(target, source, env): return (n_target, source) -def copy_action_func(target, source, env): +def copy_action_func(target, source, env) -> int: assert( len(target) == len(source) ), "\ntarget: %s\nsource: %s" %(list(map(str, target)),list(map(str, source))) for t, s in zip(target, source): @@ -62,7 +62,7 @@ def copy_action_str(target, source, env): copy_action = SCons.Action.Action( copy_action_func, copy_action_str ) -def generate(env): +def generate(env) -> None: try: env['BUILDERS']['CopyTo'] env['BUILDERS']['CopyAs'] @@ -88,7 +88,7 @@ def generate(env): env['COPYSTR'] = 'Copy file(s): "$SOURCES" to "$TARGETS"' -def exists(env): +def exists(env) -> int: return 1 # Local Variables: diff --git a/SCons/Tool/fortran.py b/SCons/Tool/fortran.py index d21b93087..4463085f7 100644 --- a/SCons/Tool/fortran.py +++ b/SCons/Tool/fortran.py @@ -33,7 +33,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_fortran_to_env compilers = ['f95', 'f90', 'f77'] -def generate(env): +def generate(env) -> None: add_all_to_env(env) add_fortran_to_env(env) diff --git a/SCons/Tool/g77.py b/SCons/Tool/g77.py index aea419a2f..8c69d8532 100644 --- a/SCons/Tool/g77.py +++ b/SCons/Tool/g77.py @@ -35,7 +35,7 @@ from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env compilers = ['g77', 'f77'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for g77 to an Environment.""" add_all_to_env(env) add_f77_to_env(env) diff --git a/SCons/Tool/gas.py b/SCons/Tool/gas.py index d01bd60cc..04c9a2ed8 100644 --- a/SCons/Tool/gas.py +++ b/SCons/Tool/gas.py @@ -40,7 +40,7 @@ except: assemblers = ['as', 'gas'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for as to an Environment.""" as_module.generate(env) diff --git a/SCons/Tool/gcc.py b/SCons/Tool/gcc.py index 1a25cb44d..d564f9cb2 100644 --- a/SCons/Tool/gcc.py +++ b/SCons/Tool/gcc.py @@ -40,7 +40,7 @@ import SCons.Util compilers = ['gcc', 'cc'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for gcc to an Environment.""" if 'CC' not in env: diff --git a/SCons/Tool/gdc.py b/SCons/Tool/gdc.py index 0728c6fec..c77e27a05 100644 --- a/SCons/Tool/gdc.py +++ b/SCons/Tool/gdc.py @@ -54,7 +54,7 @@ import SCons.Tool.DCommon as DCommon import SCons.Tool.linkCommon -def generate(env): +def generate(env) -> None: static_obj, shared_obj = SCons.Tool.createObjBuilders(env) static_obj.add_action('.d', SCons.Defaults.DAction) diff --git a/SCons/Tool/gettext_tool.py b/SCons/Tool/gettext_tool.py index a1407b362..18c7c0eef 100644 --- a/SCons/Tool/gettext_tool.py +++ b/SCons/Tool/gettext_tool.py @@ -40,7 +40,7 @@ from SCons.Tool.GettextCommon import ( _xgettext_exists, ) -def generate(env, **kw): +def generate(env, **kw) -> None: for t in tool_list(env['PLATFORM'], env): if sys.platform == 'win32': tool = SCons.Tool.find_program_path( diff --git a/SCons/Tool/gfortran.py b/SCons/Tool/gfortran.py index f9c0a4535..cb55ad602 100644 --- a/SCons/Tool/gfortran.py +++ b/SCons/Tool/gfortran.py @@ -34,7 +34,7 @@ from SCons.Util import CLVar from . import fortran -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for gfortran.""" fortran.generate(env) diff --git a/SCons/Tool/gnulink.py b/SCons/Tool/gnulink.py index e8b668fa3..159aa972c 100644 --- a/SCons/Tool/gnulink.py +++ b/SCons/Tool/gnulink.py @@ -39,7 +39,7 @@ import SCons.Tool from . import link -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for gnulink to an Environment.""" link.generate(env) diff --git a/SCons/Tool/gs.py b/SCons/Tool/gs.py index 25359a858..8955bfd58 100644 --- a/SCons/Tool/gs.py +++ b/SCons/Tool/gs.py @@ -50,7 +50,7 @@ else: GhostscriptAction = None -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for Ghostscript to an Environment.""" global GhostscriptAction diff --git a/SCons/Tool/gxx.py b/SCons/Tool/gxx.py index 1272997be..e788381b7 100644 --- a/SCons/Tool/gxx.py +++ b/SCons/Tool/gxx.py @@ -41,7 +41,7 @@ from . import cxx compilers = ['g++'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for g++ to an Environment.""" static_obj, shared_obj = SCons.Tool.createObjBuilders(env) diff --git a/SCons/Tool/hpcc.py b/SCons/Tool/hpcc.py index 51d2e3802..f893686a8 100644 --- a/SCons/Tool/hpcc.py +++ b/SCons/Tool/hpcc.py @@ -36,7 +36,7 @@ import SCons.Util from . import cc -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for aCC & cc to an Environment.""" cc.generate(env) diff --git a/SCons/Tool/hpcxx.py b/SCons/Tool/hpcxx.py index 7113fa222..c02a06f72 100644 --- a/SCons/Tool/hpcxx.py +++ b/SCons/Tool/hpcxx.py @@ -60,7 +60,7 @@ for dir in dirs: break -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for g++ to an Environment.""" cplusplus.generate(env) diff --git a/SCons/Tool/hplink.py b/SCons/Tool/hplink.py index ba182f1d3..0d26fa4a2 100644 --- a/SCons/Tool/hplink.py +++ b/SCons/Tool/hplink.py @@ -51,7 +51,7 @@ for dir in dirs: ccLinker = linker break -def generate(env): +def generate(env) -> None: """ Add Builders and construction variables for Visual Age linker to an Environment. diff --git a/SCons/Tool/icc.py b/SCons/Tool/icc.py index adf24e9ab..63c7fd0ff 100644 --- a/SCons/Tool/icc.py +++ b/SCons/Tool/icc.py @@ -35,7 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" from . import cc -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for the OS/2 to an Environment.""" cc.generate(env) diff --git a/SCons/Tool/ifl.py b/SCons/Tool/ifl.py index 574695072..dac8179fa 100644 --- a/SCons/Tool/ifl.py +++ b/SCons/Tool/ifl.py @@ -32,7 +32,7 @@ import SCons.Defaults from SCons.Scanner.Fortran import FortranScan from .FortranCommon import add_all_to_env -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ifl to an Environment.""" fscan = FortranScan("FORTRANPATH") SCons.Tool.SourceFileScanner.add_scanner('.i', fscan) diff --git a/SCons/Tool/ifort.py b/SCons/Tool/ifort.py index bf39b7f49..92109234d 100644 --- a/SCons/Tool/ifort.py +++ b/SCons/Tool/ifort.py @@ -35,7 +35,7 @@ from SCons.Scanner.Fortran import FortranScan from .FortranCommon import add_all_to_env -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ifort to an Environment.""" # ifort supports Fortran 90 and Fortran 95 # Additionally, ifort recognizes more file extensions. diff --git a/SCons/Tool/ilink.py b/SCons/Tool/ilink.py index 4112825b8..6be62d3c7 100644 --- a/SCons/Tool/ilink.py +++ b/SCons/Tool/ilink.py @@ -33,7 +33,7 @@ import SCons.Defaults import SCons.Tool import SCons.Util -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ilink to an Environment.""" SCons.Tool.createProgBuilder(env) diff --git a/SCons/Tool/ilink32.py b/SCons/Tool/ilink32.py index 1452fd555..1bdc6d0a6 100644 --- a/SCons/Tool/ilink32.py +++ b/SCons/Tool/ilink32.py @@ -33,7 +33,7 @@ import SCons.Tool import SCons.Tool.bcc32 import SCons.Util -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for Borland ilink to an Environment.""" SCons.Tool.createSharedLibBuilder(env) diff --git a/SCons/Tool/install.py b/SCons/Tool/install.py index d6870c398..54fc09036 100644 --- a/SCons/Tool/install.py +++ b/SCons/Tool/install.py @@ -50,8 +50,8 @@ class CopytreeError(OSError): pass -def scons_copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, - ignore_dangling_symlinks=False, dirs_exist_ok=False): +def scons_copytree(src, dst, symlinks: bool=False, ignore=None, copy_function=copy2, + ignore_dangling_symlinks: bool=False, dirs_exist_ok: bool=False): """Recursively copy a directory tree, SCons version. This is a modified copy of the Python 3.7 shutil.copytree function. @@ -225,7 +225,7 @@ def listShlibLinksToInstall(dest, source, env): install_links.append((install_link, install_linktgt)) return install_links -def installShlibLinks(dest, source, env): +def installShlibLinks(dest, source, env) -> None: """If we are installing a versioned shared library create the required links.""" Verbose = False symlinks = listShlibLinksToInstall(dest, source, env) @@ -337,7 +337,7 @@ class DESTDIR_factory: """ A node factory, where all files will be relative to the dir supplied in the constructor. """ - def __init__(self, env, dir): + def __init__(self, env, dir) -> None: self.env = env self.dir = env.arg2nodes( dir, env.fs.Dir )[0] @@ -429,7 +429,7 @@ def InstallVersionedBuilderWrapper(env, target=None, source=None, dir=None, **kw added = None -def generate(env): +def generate(env) -> None: from SCons.Script import AddOption, GetOption global added @@ -500,7 +500,7 @@ def generate(env): except KeyError: env['INSTALLVERSIONEDLIB'] = copyFuncVersionedLib -def exists(env): +def exists(env) -> int: return 1 # Local Variables: diff --git a/SCons/Tool/intelc.py b/SCons/Tool/intelc.py index ac6fa6077..a7b480242 100644 --- a/SCons/Tool/intelc.py +++ b/SCons/Tool/intelc.py @@ -384,7 +384,7 @@ def get_intel_compiler_top(version, abi): return top -def generate(env, version=None, abi=None, topdir=None, verbose=0): +def generate(env, version=None, abi=None, topdir=None, verbose: int=0): r"""Add Builders and construction variables for Intel C/C++ compiler to an Environment. diff --git a/SCons/Tool/ipkg.py b/SCons/Tool/ipkg.py index 8e01dd26d..b295c121e 100644 --- a/SCons/Tool/ipkg.py +++ b/SCons/Tool/ipkg.py @@ -39,7 +39,7 @@ import os import SCons.Builder -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ipkg to an Environment.""" try: bld = env['BUILDERS']['Ipkg'] diff --git a/SCons/Tool/jar.py b/SCons/Tool/jar.py index ae44ff3bd..1967294f0 100644 --- a/SCons/Tool/jar.py +++ b/SCons/Tool/jar.py @@ -240,7 +240,7 @@ def generate(env) -> None: env['JARCOM'] = "${TEMPFILE('$_JARCOM','$JARCOMSTR')}" env['JARSUFFIX'] = '.jar' -def exists(env): +def exists(env) -> bool: # As reported by Jan Nijtmans in issue #2730, the simple # return env.Detect('jar') # doesn't always work during initialization. For now, we diff --git a/SCons/Tool/javac.py b/SCons/Tool/javac.py index 1b331253b..635392459 100644 --- a/SCons/Tool/javac.py +++ b/SCons/Tool/javac.py @@ -73,7 +73,7 @@ def emit_java_classes(target, source, env): elif isinstance(entry, SCons.Node.FS.Dir): result = OrderedDict() dirnode = entry.rdir() - def find_java_files(arg, dirpath, filenames): + def find_java_files(arg, dirpath, filenames) -> None: java_files = sorted([n for n in filenames if _my_normcase(n).endswith(js)]) mydir = dirnode.Dir(dirpath) @@ -141,7 +141,7 @@ class pathopt: Callable object for generating javac-style path options from a construction variable (e.g. -classpath, -sourcepath). """ - def __init__(self, opt, var, default=None): + def __init__(self, opt, var, default=None) -> None: self.opt = opt self.var = var self.default = default @@ -198,7 +198,7 @@ def Java(env, target, source, *args, **kw): return result -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for javac to an Environment.""" java_file = SCons.Tool.CreateJavaFileBuilder(env) java_class = SCons.Tool.CreateJavaClassFileBuilder(env) @@ -242,7 +242,7 @@ def generate(env): env['_JAVACCOM'] = '$JAVAC $JAVACFLAGS $_JAVABOOTCLASSPATH $_JAVAPROCESSORPATH $_JAVACLASSPATH -d ${TARGET.attributes.java_classdir} $_JAVASOURCEPATH $SOURCES' env['JAVACCOM'] = "${TEMPFILE('$_JAVACCOM','$JAVACCOMSTR')}" -def exists(env): +def exists(env) -> int: return 1 # Local Variables: diff --git a/SCons/Tool/javacTests.py b/SCons/Tool/javacTests.py index 08633d5e4..46f1af120 100644 --- a/SCons/Tool/javacTests.py +++ b/SCons/Tool/javacTests.py @@ -27,39 +27,39 @@ import unittest import SCons.Tool.javac class DummyNode: - def __init__(self, val): + def __init__(self, val) -> None: self.val = val - def __str__(self): + def __str__(self) -> str: return str(self.val) class pathoptTestCase(unittest.TestCase): - def assert_pathopt(self, expect, path): + def assert_pathopt(self, expect, path) -> None: popt = SCons.Tool.javac.pathopt('-foopath', 'FOOPATH') env = {'FOOPATH': path} actual = popt(None, None, env, None) self.assertEqual(expect, actual) - def assert_pathopt_default(self, expect, path, default): + def assert_pathopt_default(self, expect, path, default) -> None: popt = SCons.Tool.javac.pathopt('-foopath', 'FOOPATH', default='DPATH') env = {'FOOPATH': path, 'DPATH': default} actual = popt(None, None, env, None) self.assertEqual(expect, actual) - def test_unset(self): + def test_unset(self) -> None: self.assert_pathopt([], None) self.assert_pathopt([], '') - def test_str(self): + def test_str(self) -> None: self.assert_pathopt(['-foopath', '/foo/bar'], '/foo/bar') - def test_list_str(self): + def test_list_str(self) -> None: self.assert_pathopt(['-foopath', '/foo%s/bar' % os.pathsep], ['/foo', '/bar']) - def test_uses_pathsep(self): + def test_uses_pathsep(self) -> None: save = os.pathsep try: os.pathsep = '!' @@ -68,27 +68,27 @@ class pathoptTestCase(unittest.TestCase): finally: os.pathsep = save - def test_node(self): + def test_node(self) -> None: self.assert_pathopt(['-foopath', '/foo'], DummyNode('/foo')) - def test_list_node(self): + def test_list_node(self) -> None: self.assert_pathopt(['-foopath', os.pathsep.join(['/foo','/bar'])], ['/foo', DummyNode('/bar')]) - def test_default_str(self): + def test_default_str(self) -> None: self.assert_pathopt_default( ['-foopath', os.pathsep.join(['/foo','/bar','/baz'])], ['/foo', '/bar'], '/baz') - def test_default_list(self): + def test_default_list(self) -> None: self.assert_pathopt_default( ['-foopath', os.pathsep.join(['/foo','/bar','/baz'])], ['/foo', '/bar'], ['/baz']) - def test_default_unset(self): + def test_default_unset(self) -> None: self.assert_pathopt_default( ['-foopath', '/foo'], '/foo', @@ -98,7 +98,7 @@ class pathoptTestCase(unittest.TestCase): '/foo', '') - def test_list_within_list(self): + def test_list_within_list(self) -> None: self.assert_pathopt(['-foopath', os.pathsep.join(['/foo','/bar'])], ['/foo', ['/bar']]) diff --git a/SCons/Tool/javah.py b/SCons/Tool/javah.py index c5a75646e..4b688152e 100644 --- a/SCons/Tool/javah.py +++ b/SCons/Tool/javah.py @@ -109,13 +109,13 @@ def JavaHOutFlagGenerator(target, source, env, for_signature): except AttributeError: return '-o ' + str(t) -def getJavaHClassPath(env,target, source, for_signature): +def getJavaHClassPath(env,target, source, for_signature) -> str: path = "${SOURCE.attributes.java_classdir}" if 'JAVACLASSPATH' in env and env['JAVACLASSPATH']: path = SCons.Util.AppendPath(path, env['JAVACLASSPATH']) return "-classpath %s" % path -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for javah to an Environment.""" java_javah = SCons.Tool.CreateJavaHBuilder(env) java_javah.emitter = emit_java_headers diff --git a/SCons/Tool/latex.py b/SCons/Tool/latex.py index f30356b23..ddbcdf998 100644 --- a/SCons/Tool/latex.py +++ b/SCons/Tool/latex.py @@ -50,7 +50,7 @@ def LaTeXAuxFunction(target = None, source= None, env=None): LaTeXAuxAction = SCons.Action.Action(LaTeXAuxFunction, strfunction=SCons.Tool.tex.TeXLaTeXStrFunction) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for LaTeX to an Environment.""" env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes) diff --git a/SCons/Tool/ldc.py b/SCons/Tool/ldc.py index fa02bf873..758385368 100644 --- a/SCons/Tool/ldc.py +++ b/SCons/Tool/ldc.py @@ -58,7 +58,7 @@ import SCons.Tool import SCons.Tool.DCommon as DCommon -def generate(env): +def generate(env) -> None: static_obj, shared_obj = SCons.Tool.createObjBuilders(env) static_obj.add_action('.d', SCons.Defaults.DAction) diff --git a/SCons/Tool/lex.py b/SCons/Tool/lex.py index 3f1a3ade1..527f91c29 100644 --- a/SCons/Tool/lex.py +++ b/SCons/Tool/lex.py @@ -95,7 +95,7 @@ def lexEmitter(target, source, env) -> tuple: return target, source -def get_lex_path(env, append_paths=False) -> Optional[str]: +def get_lex_path(env, append_paths: bool=False) -> Optional[str]: """ Returns the path to the lex tool, searching several possible names. diff --git a/SCons/Tool/link.py b/SCons/Tool/link.py index 24d17a31f..e879ae862 100644 --- a/SCons/Tool/link.py +++ b/SCons/Tool/link.py @@ -40,7 +40,7 @@ from SCons.Tool.linkCommon.LoadableModule import setup_loadable_module_logic from SCons.Tool.linkCommon.SharedLibrary import setup_shared_lib_logic -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for gnulink to an Environment.""" createProgBuilder(env) diff --git a/SCons/Tool/linkCommon/LoadableModule.py b/SCons/Tool/linkCommon/LoadableModule.py index c8124a088..77a06eddd 100644 --- a/SCons/Tool/linkCommon/LoadableModule.py +++ b/SCons/Tool/linkCommon/LoadableModule.py @@ -65,7 +65,7 @@ def _ldmodule_soversion(target, source, env, for_signature): return '' -def _ldmodule_soname(target, source, env, for_signature): +def _ldmodule_soname(target, source, env, for_signature) -> str: if 'SONAME' in env: return '$SONAME' else: @@ -82,7 +82,7 @@ def _LDMODULEVERSION(target, source, env, for_signature): else: return "" -def setup_loadable_module_logic(env): +def setup_loadable_module_logic(env) -> None: """ Just the logic for loadable modules diff --git a/SCons/Tool/linkCommon/SharedLibrary.py b/SCons/Tool/linkCommon/SharedLibrary.py index d18aa6b4b..30170f8bb 100644 --- a/SCons/Tool/linkCommon/SharedLibrary.py +++ b/SCons/Tool/linkCommon/SharedLibrary.py @@ -100,7 +100,7 @@ def _soversion(target, source, env, for_signature): return "" -def _soname(target, source, env, for_signature): +def _soname(target, source, env, for_signature) -> str: if "SONAME" in env: # Now verify that SOVERSION is not also set as that is not allowed if "SOVERSION" in env: @@ -177,7 +177,7 @@ def _get_shlib_dir(target, source, env, for_signature: bool) -> str: return "" -def setup_shared_lib_logic(env): +def setup_shared_lib_logic(env) -> None: """Initialize an environment for shared library building. Args: diff --git a/SCons/Tool/linkCommon/__init__.py b/SCons/Tool/linkCommon/__init__.py index 5461ad3db..b8d7610c4 100644 --- a/SCons/Tool/linkCommon/__init__.py +++ b/SCons/Tool/linkCommon/__init__.py @@ -45,7 +45,7 @@ def StringizeLibSymlinks(symlinks): return symlinks -def EmitLibSymlinks(env, symlinks, libnode, **kw): +def EmitLibSymlinks(env, symlinks, libnode, **kw) -> None: """Used by emitters to handle (shared/versioned) library symlinks""" Verbose = False @@ -66,7 +66,7 @@ def EmitLibSymlinks(env, symlinks, libnode, **kw): print("EmitLibSymlinks: Clean(%r,%r)" % (linktgt.get_path(), [x.get_path() for x in clean_list])) -def CreateLibSymlinks(env, symlinks): +def CreateLibSymlinks(env, symlinks) -> int: """Physically creates symlinks. The symlinks argument must be a list in form [ (link, linktarget), ... ], where link and linktarget are SCons nodes. @@ -92,7 +92,7 @@ def CreateLibSymlinks(env, symlinks): return 0 -def LibSymlinksActionFunction(target, source, env): +def LibSymlinksActionFunction(target, source, env) -> int: for tgt in target: symlinks = getattr(getattr(tgt, 'attributes', None), 'shliblinks', None) if symlinks: @@ -127,7 +127,7 @@ def _call_env_subst(env, string, *args, **kw): return env.subst(string, *args, **kw2) -def smart_link(source, target, env, for_signature): +def smart_link(source, target, env, for_signature) -> str: import SCons.Tool.cxx import SCons.Tool.FortranCommon diff --git a/SCons/Tool/linkCommon/linkCommmonTests.py b/SCons/Tool/linkCommon/linkCommmonTests.py index e55660d77..5326da214 100644 --- a/SCons/Tool/linkCommon/linkCommmonTests.py +++ b/SCons/Tool/linkCommon/linkCommmonTests.py @@ -31,10 +31,10 @@ from SCons.Environment import Environment class SharedLibraryTestCase(unittest.TestCase): - def setUp(self): + def setUp(self) -> None: pass - def test_shlib_symlink_emitter(self): + def test_shlib_symlink_emitter(self) -> None: """Test shlib_symlink_emitter() """ env = Environment(tools=['gnulink']) diff --git a/SCons/Tool/linkloc.py b/SCons/Tool/linkloc.py index 6ee5d6192..6122d9be0 100644 --- a/SCons/Tool/linkloc.py +++ b/SCons/Tool/linkloc.py @@ -61,7 +61,7 @@ def repl_linker_command(m): return m.group(1) + '#' + m.group(2) class LinklocGenerator: - def __init__(self, cmdline): + def __init__(self, cmdline) -> None: self.cmdline = cmdline def __call__(self, env, target, source, for_signature): @@ -75,7 +75,7 @@ class LinklocGenerator: else: return "${TEMPFILE('" + self.cmdline + "')}" -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ar to an Environment.""" SCons.Tool.createSharedLibBuilder(env) SCons.Tool.createProgBuilder(env) diff --git a/SCons/Tool/m4.py b/SCons/Tool/m4.py index 8506784de..341d93dfa 100644 --- a/SCons/Tool/m4.py +++ b/SCons/Tool/m4.py @@ -37,7 +37,7 @@ import SCons.Action import SCons.Builder import SCons.Util -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for m4 to an Environment.""" M4Action = SCons.Action.Action('$M4COM', '$M4COMSTR') bld = SCons.Builder.Builder(action = M4Action, src_suffix = '.m4') diff --git a/SCons/Tool/masm.py b/SCons/Tool/masm.py index b9d88cd19..f8fae2019 100644 --- a/SCons/Tool/masm.py +++ b/SCons/Tool/masm.py @@ -44,7 +44,7 @@ if SCons.Util.case_sensitive_suffixes('.s', '.S'): else: ASSuffixes.extend(['.S']) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for masm to an Environment.""" static_obj, shared_obj = SCons.Tool.createObjBuilders(env) diff --git a/SCons/Tool/midl.py b/SCons/Tool/midl.py index c25ce69ad..0c640f509 100644 --- a/SCons/Tool/midl.py +++ b/SCons/Tool/midl.py @@ -73,7 +73,7 @@ midl_builder = SCons.Builder.Builder(action=midl_action, source_scanner=idl_scanner) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for midl to an Environment.""" env['MIDL'] = 'MIDL.EXE' diff --git a/SCons/Tool/mingw.py b/SCons/Tool/mingw.py index 8e7ac2df9..07f15b74c 100644 --- a/SCons/Tool/mingw.py +++ b/SCons/Tool/mingw.py @@ -142,7 +142,7 @@ def get_mingw_paths(): _mingw_all_paths = mingw_base_paths + find_version_specific_mingw_paths() return _mingw_all_paths -def generate(env): +def generate(env) -> None: # Check for reasoanble mingw default paths mingw_paths = get_mingw_paths() diff --git a/SCons/Tool/msgfmt.py b/SCons/Tool/msgfmt.py index a15c1dcc0..334e0580e 100644 --- a/SCons/Tool/msgfmt.py +++ b/SCons/Tool/msgfmt.py @@ -86,7 +86,7 @@ def _create_mo_file_builder(env, **kw): return _MOFileBuilder(**kw) -def generate(env, **kw): +def generate(env, **kw) -> None: """ Generate `msgfmt` tool """ if sys.platform == 'win32': diff --git a/SCons/Tool/msginit.py b/SCons/Tool/msginit.py index 9635f5710..19aaccb4e 100644 --- a/SCons/Tool/msginit.py +++ b/SCons/Tool/msginit.py @@ -79,7 +79,7 @@ def _POInitBuilderWrapper(env, target=None, source=_null, **kw): source = [domain] # NOTE: Suffix shall be appended automatically return env._POInitBuilder(target, source, **kw) -def generate(env, **kw): +def generate(env, **kw) -> None: """ Generate the `msginit` tool """ if sys.platform == 'win32': diff --git a/SCons/Tool/msgmerge.py b/SCons/Tool/msgmerge.py index 69508ebbf..292e75d6d 100644 --- a/SCons/Tool/msgmerge.py +++ b/SCons/Tool/msgmerge.py @@ -77,7 +77,7 @@ def _POUpdateBuilderWrapper(env, target=None, source=_null, **kw): return env._POUpdateBuilder(target, source, **kw) -def generate(env, **kw): +def generate(env, **kw) -> None: """ Generate the `msgmerge` tool """ if sys.platform == 'win32': diff --git a/SCons/Tool/mslib.py b/SCons/Tool/mslib.py index be4088b15..6e15a808f 100644 --- a/SCons/Tool/mslib.py +++ b/SCons/Tool/mslib.py @@ -45,7 +45,7 @@ from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once tool_name = 'mslib' -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for lib to an Environment.""" SCons.Tool.createStaticLibBuilder(env) diff --git a/SCons/Tool/mslink.py b/SCons/Tool/mslink.py index 2a90e174e..1e5b71ae1 100644 --- a/SCons/Tool/mslink.py +++ b/SCons/Tool/mslink.py @@ -256,7 +256,7 @@ compositeLdmodAction = ldmodLinkAction + regServerCheck + embedManifestDllCheckA exeLinkAction = SCons.Action.Action('${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET.windows $_LIBDIRFLAGS $_LIBFLAGS $_PDB $SOURCES.windows", "$LINKCOMSTR")}', '$LINKCOMSTR') compositeLinkAction = exeLinkAction + embedManifestExeCheckAction -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ar to an Environment.""" SCons.Tool.createSharedLibBuilder(env, shlib_suffix='$SHLIBSUFFIX') SCons.Tool.createProgBuilder(env) diff --git a/SCons/Tool/mssdk.py b/SCons/Tool/mssdk.py index b94f105f0..0151eff2b 100644 --- a/SCons/Tool/mssdk.py +++ b/SCons/Tool/mssdk.py @@ -36,7 +36,7 @@ selection method. from .MSCommon import mssdk_exists, \ mssdk_setup_env -def generate(env): +def generate(env) -> None: """Add construction variables for an MS SDK to an Environment.""" mssdk_setup_env(env) diff --git a/SCons/Tool/msvc.py b/SCons/Tool/msvc.py index 191d2cc7c..33a67d0f4 100644 --- a/SCons/Tool/msvc.py +++ b/SCons/Tool/msvc.py @@ -60,7 +60,7 @@ def validate_vars(env): if not SCons.Util.is_String(env['PCHSTOP']): raise SCons.Errors.UserError("The PCHSTOP construction variable must be a string: %r"%env['PCHSTOP']) -def msvc_set_PCHPDBFLAGS(env): +def msvc_set_PCHPDBFLAGS(env) -> None: """ Set appropriate PCHPDBFLAGS for the MSVC version being used. """ @@ -229,7 +229,7 @@ ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR", -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for MSVC++ to an Environment.""" static_obj, shared_obj = SCons.Tool.createObjBuilders(env) diff --git a/SCons/Tool/msvs.py b/SCons/Tool/msvs.py index 86df1ef66..51e2970e4 100644 --- a/SCons/Tool/msvs.py +++ b/SCons/Tool/msvs.py @@ -207,7 +207,7 @@ class _UserGenerator: usrdebg = None usrconf = None createfile = False - def __init__(self, dspfile, source, env): + def __init__(self, dspfile, source, env) -> None: # DebugSettings should be a list of debug dictionary sorted in the same order # as the target list and variants if 'variant' not in env: @@ -249,12 +249,12 @@ class _UserGenerator: trg[key] = str(src[key]) self.configs[var].debug = trg - def UserHeader(self): + def UserHeader(self) -> None: encoding = self.env.subst('$MSVSENCODING') versionstr = self.versionstr self.usrfile.write(self.usrhead % locals()) - def UserProject(self): + def UserProject(self) -> None: pass def Build(self): @@ -317,14 +317,14 @@ V9DebugSettings = { class _GenerateV7User(_UserGenerator): """Generates a Project file for MSVS .NET""" - def __init__(self, dspfile, source, env): + def __init__(self, dspfile, source, env) -> None: if self.version_num >= 9.0: self.usrhead = V9UserHeader self.usrconf = V9UserConfiguration self.usrdebg = V9DebugSettings super().__init__(dspfile, source, env) - def UserProject(self): + def UserProject(self) -> None: confkeys = sorted(self.configs.keys()) for kind in confkeys: variant = self.configs[kind].variant @@ -379,7 +379,7 @@ V10DebugSettings = { class _GenerateV10User(_UserGenerator): """Generates a Project'user file for MSVS 2010 or later""" - def __init__(self, dspfile, source, env): + def __init__(self, dspfile, source, env) -> None: version_num, suite = msvs_parse_version(env['MSVS_VERSION']) if version_num >= 14.3: # Visual Studio 2022 is considered to be version 17. @@ -399,7 +399,7 @@ class _GenerateV10User(_UserGenerator): self.usrdebg = V10DebugSettings super().__init__(dspfile, source, env) - def UserProject(self): + def UserProject(self) -> None: confkeys = sorted(self.configs.keys()) for kind in confkeys: variant = self.configs[kind].variant @@ -422,7 +422,7 @@ class _DSPGenerator: 'resources', 'misc'] - def __init__(self, dspfile, source, env): + def __init__(self, dspfile, source, env) -> None: self.dspfile = str(dspfile) try: get_abspath = dspfile.get_abspath @@ -585,7 +585,7 @@ class _DSPGenerator: for n in sourcenames: self.sources[n].sort(key=lambda a: a.lower()) - def AddConfig(self, variant, buildtarget, outdir, runfile, cmdargs, cppdefines, cpppaths, cppflags, dspfile=dspfile, env=env): + def AddConfig(self, variant, buildtarget, outdir, runfile, cmdargs, cppdefines, cpppaths, cppflags, dspfile=dspfile, env=env) -> None: config = Config() config.buildtarget = buildtarget config.outdir = outdir @@ -617,7 +617,7 @@ class _DSPGenerator: if not (p.platform in seen or seen.add(p.platform))] - def Build(self): + def Build(self) -> None: pass V6DSPHeader = """\ @@ -645,7 +645,7 @@ CFG=%(name)s - Win32 %(confkey)s class _GenerateV6DSP(_DSPGenerator): """Generates a Project file for MSVS 6.0""" - def PrintHeader(self): + def PrintHeader(self) -> None: # pick a default config confkeys = sorted(self.configs.keys()) @@ -659,7 +659,7 @@ class _GenerateV6DSP(_DSPGenerator): self.file.write('!MESSAGE\n\n') - def PrintProject(self): + def PrintProject(self) -> None: name = self.name self.file.write('# Begin Project\n' '# PROP AllowPerConfigDependencies 0\n' @@ -728,7 +728,7 @@ class _GenerateV6DSP(_DSPGenerator): pdata = base64.b64encode(pdata).decode() self.file.write(pdata + '\n') - def PrintSourceFiles(self): + def PrintSourceFiles(self) -> None: categories = {'Source Files': 'cpp|c|cxx|l|y|def|odl|idl|hpj|bat', 'Header Files': 'h|hpp|hxx|hm|inl', 'Local Headers': 'h|hpp|hxx|hm|inl', @@ -882,7 +882,7 @@ V8DSPConfiguration = """\ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User): """Generates a Project file for MSVS .NET""" - def __init__(self, dspfile, source, env): + def __init__(self, dspfile, source, env) -> None: _DSPGenerator.__init__(self, dspfile, source, env) self.version = env['MSVS_VERSION'] self.version_num, self.suite = msvs_parse_version(self.version) @@ -905,7 +905,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User): _GenerateV7User.__init__(self, dspfile, source, env) - def PrintHeader(self): + def PrintHeader(self) -> None: env = self.env versionstr = self.versionstr name = self.name @@ -948,7 +948,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User): self.file.write('\t<ToolFiles>\n' '\t</ToolFiles>\n') - def PrintProject(self): + def PrintProject(self) -> None: self.file.write('\t<Configurations>\n') confkeys = sorted(self.configs.keys()) @@ -1005,7 +1005,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User): pdata = base64.b64encode(pdata).decode() self.file.write(pdata + '-->\n') - def printSources(self, hierarchy, commonprefix): + def printSources(self, hierarchy, commonprefix) -> None: sorteditems = sorted(hierarchy.items(), key=lambda a: a[0].lower()) # First folders, then files @@ -1027,7 +1027,7 @@ class _GenerateV7DSP(_DSPGenerator, _GenerateV7User): '\t\t\t\tRelativePath="%s">\n' '\t\t\t</File>\n' % file) - def PrintSourceFiles(self): + def PrintSourceFiles(self) -> None: categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat', 'Header Files': 'h;hpp;hxx;hm;inl', 'Local Headers': 'h;hpp;hxx;hm;inl', @@ -1192,7 +1192,7 @@ V15DSPHeader = """\ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): """Generates a Project file for MSVS 2010""" - def __init__(self, dspfile, source, env): + def __init__(self, dspfile, source, env) -> None: _DSPGenerator.__init__(self, dspfile, source, env) self.dspheader = V10DSPHeader self.dspconfiguration = V10DSPProjectConfiguration @@ -1200,7 +1200,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): _GenerateV10User.__init__(self, dspfile, source, env) - def PrintHeader(self): + def PrintHeader(self) -> None: env = self.env name = self.name versionstr = self.versionstr @@ -1340,7 +1340,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): pdata = base64.b64encode(pdata).decode() self.file.write(pdata + '-->\n') - def printFilters(self, hierarchy, name): + def printFilters(self, hierarchy, name) -> None: sorteditems = sorted(hierarchy.items(), key = lambda a: a[0].lower()) for key, value in sorteditems: @@ -1351,7 +1351,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): '\t\t</Filter>\n' % (filter_name, _generateGUID(self.dspabs, filter_name))) self.printFilters(value, filter_name) - def printSources(self, hierarchy, kind, commonprefix, filter_name): + def printSources(self, hierarchy, kind, commonprefix, filter_name) -> None: keywords = {'Source Files': 'ClCompile', 'Header Files': 'ClInclude', 'Local Headers': 'ClInclude', @@ -1377,7 +1377,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): '\t\t\t<Filter>%s</Filter>\n' '\t\t</%s>\n' % (keywords[kind], file, filter_name, keywords[kind])) - def PrintSourceFiles(self): + def PrintSourceFiles(self) -> None: categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat', 'Header Files': 'h;hpp;hxx;hm;inl', 'Local Headers': 'h;hpp;hxx;hm;inl', @@ -1443,7 +1443,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): #'\t\t<None Include="SConstruct" />\n' '\t</ItemGroup>\n' % str(self.sconscript)) - def Parse(self): + def Parse(self) -> None: # DEBUG # print("_GenerateV10DSP.Parse()") pass @@ -1462,7 +1462,7 @@ class _GenerateV10DSP(_DSPGenerator, _GenerateV10User): class _DSWGenerator: """ Base class for DSW generators """ - def __init__(self, dswfile, source, env): + def __init__(self, dswfile, source, env) -> None: self.dswfile = os.path.normpath(str(dswfile)) self.dsw_folder_path = os.path.dirname(os.path.abspath(self.dswfile)) self.env = env @@ -1483,12 +1483,12 @@ class _DSWGenerator: self.name = os.path.basename(SCons.Util.splitext(self.dswfile)[0]) self.name = self.env.subst(self.name) - def Build(self): + def Build(self) -> None: pass class _GenerateV7DSW(_DSWGenerator): """Generates a Solution file for MSVS .NET""" - def __init__(self, dswfile, source, env): + def __init__(self, dswfile, source, env) -> None: super().__init__(dswfile, source, env) self.file = None @@ -1520,7 +1520,7 @@ class _GenerateV7DSW(_DSWGenerator): if self.nokeep == 0 and os.path.exists(self.dswfile): self.Parse() - def AddConfig(self, variant, dswfile=dswfile): + def AddConfig(self, variant, dswfile=dswfile) -> None: config = Config() match = re.match(r'(.*)\|(.*)', variant) @@ -1548,7 +1548,7 @@ class _GenerateV7DSW(_DSWGenerator): self.platforms = [p.platform for p in self.configs.values() if not (p.platform in seen or seen.add(p.platform))] - def GenerateProjectFilesInfo(self): + def GenerateProjectFilesInfo(self) -> None: for dspfile in self.dspfiles: dsp_folder_path, name = os.path.split(dspfile) dsp_folder_path = os.path.abspath(dsp_folder_path) @@ -1601,7 +1601,7 @@ class _GenerateV7DSW(_DSWGenerator): self.configs.update(data) - def PrintSolution(self): + def PrintSolution(self) -> None: """Writes a solution file""" self.file.write('Microsoft Visual Studio Solution File, Format Version %s\n' % self.versionstr) if self.version_num >= 14.3: @@ -1769,7 +1769,7 @@ Package=<3> class _GenerateV6DSW(_DSWGenerator): """Generates a Workspace file for MSVS 6.0""" - def PrintWorkspace(self): + def PrintWorkspace(self) -> None: """ writes a DSW file """ name = self.name dspfile = os.path.relpath(self.dspfiles[0], self.dsw_folder_path) @@ -1785,7 +1785,7 @@ class _GenerateV6DSW(_DSWGenerator): self.file.close() -def GenerateDSP(dspfile, source, env): +def GenerateDSP(dspfile, source, env) -> None: """Generates a Project file based on the version of MSVS that is being used""" version_num = 6.0 @@ -1801,7 +1801,7 @@ def GenerateDSP(dspfile, source, env): g = _GenerateV6DSP(dspfile, source, env) g.Build() -def GenerateDSW(dswfile, source, env): +def GenerateDSW(dswfile, source, env) -> None: """Generates a Solution/Workspace file based on the version of MSVS that is being used""" version_num = 6.0 @@ -1861,7 +1861,7 @@ def GenerateProject(target, source, env): GenerateDSW(dswfile, source, env) -def GenerateSolution(target, source, env): +def GenerateSolution(target, source, env) -> None: GenerateDSW(target[0], source, env) def projectEmitter(target, source, env): @@ -2039,7 +2039,7 @@ solutionBuilder = SCons.Builder.Builder(action = '$MSVSSOLUTIONCOM', default_MSVS_SConscript = None -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for Microsoft Visual Studio project files to an Environment.""" try: diff --git a/SCons/Tool/msvsTests.py b/SCons/Tool/msvsTests.py index c4d2e9835..9c369d130 100644 --- a/SCons/Tool/msvsTests.py +++ b/SCons/Tool/msvsTests.py @@ -391,7 +391,7 @@ regdata_cv = r'''[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion] regdata_none = [] class DummyEnv: - def __init__(self, dict=None): + def __init__(self, dict=None) -> None: self.fs = SCons.Node.FS.FS() if dict: self.dict = dict @@ -403,13 +403,13 @@ class DummyEnv: return self.dict return self.dict[key] - def __setitem__(self, key, value): + def __setitem__(self, key, value) -> None: self.dict[key] = value def __getitem__(self, key): return self.dict[key] - def __contains__(self, key): + def __contains__(self, key) -> bool: return key in self.dict def get(self, name, value=None): @@ -424,14 +424,14 @@ class DummyEnv: class RegKey: """key class for storing an 'open' registry key""" - def __init__(self,key): + def __init__(self,key) -> None: self.key = key # Warning: this is NOT case-insensitive, unlike the Windows registry. # So e.g. HKLM\Software is NOT the same key as HKLM\SOFTWARE. class RegNode: """node in the dummy registry""" - def __init__(self,name): + def __init__(self,name) -> None: self.valdict = {} self.keydict = {} self.keyarray = [] @@ -444,7 +444,7 @@ class RegNode: else: raise SCons.Util.RegError - def addValue(self,name,val): + def addValue(self,name,val) -> None: self.valdict[name] = val self.valarray.append(name) @@ -456,7 +456,7 @@ class RegNode: raise SCons.Util.RegError return rv - def key(self,key,sep = '\\'): + def key(self,key,sep: str = '\\'): if key.find(sep) != -1: keyname, subkeys = key.split(sep,1) else: @@ -471,7 +471,7 @@ class RegNode: except KeyError: raise SCons.Util.RegError - def addKey(self,name,sep = '\\'): + def addKey(self,name,sep: str = '\\'): if name.find(sep) != -1: keyname, subkeys = name.split(sep, 1) else: @@ -491,10 +491,10 @@ class RegNode: def keyindex(self,index): return self.keydict[self.keyarray[index]] - def __str__(self): + def __str__(self) -> str: return self._doStr() - def _doStr(self, indent = ''): + def _doStr(self, indent: str = ''): rv = "" for value in self.valarray: rv = rv + '%s"%s" = "%s"\n' % (indent, value, self.valdict[value]) @@ -506,7 +506,7 @@ class RegNode: class DummyRegistry: """registry class for storing fake registry attributes""" - def __init__(self,data): + def __init__(self,data) -> None: """parse input data into the fake registry""" self.root = RegNode('REGISTRY') self.root.addKey('HKEY_LOCAL_MACHINE') @@ -516,7 +516,7 @@ class DummyRegistry: self.parse(data) - def parse(self, data): + def parse(self, data) -> None: parents = [None, None] parents[0] = self.root keymatch = re.compile(r'^\[(.*)\]$') @@ -577,7 +577,7 @@ def DummyQueryValue(key, value): # print "Query Value",key.name+"\\"+value,"=>",rv return rv -def DummyExists(path): +def DummyExists(path) -> int: return 1 def DummyVsWhere(msvc_version, env): @@ -587,7 +587,7 @@ def DummyVsWhere(msvc_version, env): class msvsTestCase(unittest.TestCase): """This test case is run several times with different defaults. See its subclasses below.""" - def setUp(self): + def setUp(self) -> None: debug("THIS TYPE :%s"%self) global registry registry = self.registry @@ -599,7 +599,7 @@ class msvsTestCase(unittest.TestCase): os.chdir(self.test.workpath("")) self.fs = SCons.Node.FS.FS() - def test_get_default_version(self): + def test_get_default_version(self) -> None: """Test retrieval of the default visual studio version""" debug("Testing for default version %s"%self.default_version) @@ -632,18 +632,18 @@ class msvsTestCase(unittest.TestCase): assert env['MSVS']['VERSION'] == override, env['MSVS']['VERSION'] assert v3 == override, v3 - def _TODO_test_merge_default_version(self): + def _TODO_test_merge_default_version(self) -> None: """Test the merge_default_version() function""" pass - def test_query_versions(self): + def test_query_versions(self) -> None: """Test retrieval of the list of visual studio versions""" v1 = query_versions() assert not v1 or str(v1[0]) == self.highest_version, \ (v1, self.highest_version) assert len(v1) == self.number_of_versions, v1 - def test_config_generation(self): + def test_config_generation(self) -> None: """Test _DSPGenerator.__init__(...)""" if not self.highest_version : return diff --git a/SCons/Tool/mwcc.py b/SCons/Tool/mwcc.py index 8f1201a02..22b610a9f 100644 --- a/SCons/Tool/mwcc.py +++ b/SCons/Tool/mwcc.py @@ -37,7 +37,7 @@ import os.path import SCons.Util -def set_vars(env): +def set_vars(env) -> int: """Set MWCW_VERSION, MWCW_VERSIONS, and some codewarrior environment vars MWCW_VERSIONS is set to a list of objects representing installed versions @@ -120,7 +120,7 @@ def find_versions(): class MWVersion: - def __init__(self, version, path, platform): + def __init__(self, version, path, platform) -> None: self.version = version self.path = path self.platform = platform @@ -144,7 +144,7 @@ class MWVersion: self.includes = [msl, support] self.libs = [msl, support] - def __str__(self): + def __str__(self) -> str: return self.version @@ -152,7 +152,7 @@ CSuffixes = ['.c', '.C'] CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for the mwcc to an Environment.""" import SCons.Defaults import SCons.Tool diff --git a/SCons/Tool/mwld.py b/SCons/Tool/mwld.py index 20676606e..9824c01b5 100644 --- a/SCons/Tool/mwld.py +++ b/SCons/Tool/mwld.py @@ -35,7 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import SCons.Tool -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for lib to an Environment.""" SCons.Tool.createStaticLibBuilder(env) SCons.Tool.createSharedLibBuilder(env) diff --git a/SCons/Tool/nasm.py b/SCons/Tool/nasm.py index ff0bc612f..253ad1cf6 100644 --- a/SCons/Tool/nasm.py +++ b/SCons/Tool/nasm.py @@ -44,7 +44,7 @@ if SCons.Util.case_sensitive_suffixes('.s', '.S'): else: ASSuffixes.extend(['.S']) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for nasm to an Environment.""" static_obj, shared_obj = SCons.Tool.createObjBuilders(env) diff --git a/SCons/Tool/ninja/Methods.py b/SCons/Tool/ninja/Methods.py index c0afab80b..7259475b0 100644 --- a/SCons/Tool/ninja/Methods.py +++ b/SCons/Tool/ninja/Methods.py @@ -33,17 +33,17 @@ from SCons.Tool.ninja.Utils import get_targets_sources, get_dependencies, get_or get_rule, get_path, generate_command, get_command_env, get_comstr -def register_custom_handler(env, name, handler): +def register_custom_handler(env, name, handler) -> None: """Register a custom handler for SCons function actions.""" env[NINJA_CUSTOM_HANDLERS][name] = handler -def register_custom_rule_mapping(env, pre_subst_string, rule): +def register_custom_rule_mapping(env, pre_subst_string, rule) -> None: """Register a function to call for a given rule.""" SCons.Tool.ninja.Globals.__NINJA_RULE_MAPPING[pre_subst_string] = rule -def register_custom_rule(env, rule, command, description="", deps=None, pool=None, use_depfile=False, use_response_file=False, response_file_content="$rspc"): +def register_custom_rule(env, rule, command, description: str="", deps=None, pool=None, use_depfile: bool=False, use_response_file: bool=False, response_file_content: str="$rspc") -> None: """Allows specification of Ninja rules from inside SCons files.""" rule_obj = { "command": command, @@ -66,12 +66,12 @@ def register_custom_rule(env, rule, command, description="", deps=None, pool=Non env[NINJA_RULES][rule] = rule_obj -def register_custom_pool(env, pool, size): +def register_custom_pool(env, pool, size) -> None: """Allows the creation of custom Ninja pools""" env[NINJA_POOLS][pool] = size -def set_build_node_callback(env, node, callback): +def set_build_node_callback(env, node, callback) -> None: if not node.is_conftest(): node.attributes.ninja_build_callback = callback @@ -215,7 +215,7 @@ def get_command(env, node, action): # pylint: disable=too-many-branches return ninja_build -def gen_get_response_file_command(env, rule, tool, tool_is_dynamic=False, custom_env={}): +def gen_get_response_file_command(env, rule, tool, tool_is_dynamic: bool=False, custom_env={}): """Generate a response file command provider for rule name.""" # If win32 using the environment with a response file command will cause diff --git a/SCons/Tool/ninja/NinjaState.py b/SCons/Tool/ninja/NinjaState.py index 5e7c28919..707a9e20d 100644 --- a/SCons/Tool/ninja/NinjaState.py +++ b/SCons/Tool/ninja/NinjaState.py @@ -52,7 +52,7 @@ from .Methods import get_command class NinjaState: """Maintains state of Ninja build system as it's translated from SCons.""" - def __init__(self, env, ninja_file, ninja_syntax): + def __init__(self, env, ninja_file, ninja_syntax) -> None: self.env = env self.ninja_file = ninja_file @@ -303,7 +303,7 @@ class NinjaState: } self.pools = {"scons_pool": 1} - def add_build(self, node): + def add_build(self, node) -> bool: if not node.has_builder(): return False @@ -348,12 +348,12 @@ class NinjaState: # TODO: rely on SCons to tell us what is generated source # or some form of user scanner maybe (Github Issue #3624) - def is_generated_source(self, output): + def is_generated_source(self, output) -> bool: """Check if output ends with a known generated suffix.""" _, suffix = splitext(output) return suffix in self.generated_suffixes - def has_generated_sources(self, output): + def has_generated_sources(self, output) -> bool: """ Determine if output indicates this is a generated header file. """ @@ -710,7 +710,7 @@ class NinjaState: class SConsToNinjaTranslator: """Translates SCons Actions into Ninja build objects.""" - def __init__(self, env): + def __init__(self, env) -> None: self.env = env self.func_handlers = { # Skip conftest builders diff --git a/SCons/Tool/ninja/Overrides.py b/SCons/Tool/ninja/Overrides.py index e98ec4036..83d2efb11 100644 --- a/SCons/Tool/ninja/Overrides.py +++ b/SCons/Tool/ninja/Overrides.py @@ -27,7 +27,7 @@ ninja file generation import SCons -def ninja_hack_linkcom(env): +def ninja_hack_linkcom(env) -> None: # TODO: change LINKCOM and SHLINKCOM to handle embedding manifest exe checks # without relying on the SCons hacks that SCons uses by default. if env["PLATFORM"] == "win32": @@ -42,7 +42,7 @@ def ninja_hack_linkcom(env): ] = '${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_SHLINK_SOURCES", "$SHLINKCOMSTR")}' -def ninja_hack_arcom(env): +def ninja_hack_arcom(env) -> None: """ Force ARCOM so use 's' flag on ar instead of separately running ranlib """ @@ -68,12 +68,12 @@ class NinjaNoResponseFiles(SCons.Platform.TempFileMunge): def __call__(self, target, source, env, for_signature): return self.cmd - def _print_cmd_str(*_args, **_kwargs): + def _print_cmd_str(*_args, **_kwargs) -> None: """Disable this method""" pass -def ninja_always_serial(self, num, taskmaster): +def ninja_always_serial(self, num, taskmaster) -> None: """Replacement for SCons.Job.Jobs constructor which always uses the Serial Job class.""" # We still set self.num_jobs to num even though it's a lie. The # only consumer of this attribute is the Parallel Job class AND diff --git a/SCons/Tool/ninja/Utils.py b/SCons/Tool/ninja/Utils.py index 7269fb2e5..eb09daf4e 100644 --- a/SCons/Tool/ninja/Utils.py +++ b/SCons/Tool/ninja/Utils.py @@ -34,7 +34,7 @@ class NinjaExperimentalWarning(SCons.Warnings.WarningOnByDefault): pass -def ninja_add_command_line_options(): +def ninja_add_command_line_options() -> None: """ Add additional command line arguments to SCons specific to the ninja tool """ @@ -92,7 +92,7 @@ def alias_to_ninja_build(node): } -def check_invalid_ninja_node(node): +def check_invalid_ninja_node(node) -> bool: return not isinstance(node, (SCons.Node.FS.Base, SCons.Node.Alias.Alias)) @@ -129,7 +129,7 @@ def get_order_only(node): return [get_path(src_file(prereq)) for prereq in filter_ninja_nodes(node.prerequisites)] -def get_dependencies(node, skip_sources=False): +def get_dependencies(node, skip_sources: bool=False): """Return a list of dependencies for node.""" if skip_sources: return [ @@ -236,7 +236,7 @@ def to_escaped_list(env, lst): return sorted([dep.escape(env.get("ESCAPE", lambda x: x)) for dep in deps_list]) -def generate_depfile(env, node, dependencies): +def generate_depfile(env, node, dependencies) -> None: """ Ninja tool function for writing a depfile. The depfile should include the node path followed by all the dependent files in a makefile format. @@ -281,7 +281,7 @@ def ninja_recursive_sorted_dict(build): return sorted_dict -def ninja_sorted_build(ninja, **build): +def ninja_sorted_build(ninja, **build) -> None: sorted_dict = ninja_recursive_sorted_dict(build) ninja.build(**sorted_dict) @@ -437,7 +437,7 @@ def ninja_whereis(thing, *_args, **_kwargs): return path -def ninja_print_conf_log(s, target, source, env): +def ninja_print_conf_log(s, target, source, env) -> None: """Command line print only for conftest to generate a correct conf log.""" if target and target[0].is_conftest(): action = SCons.Action._ActionAction() diff --git a/SCons/Tool/ninja/__init__.py b/SCons/Tool/ninja/__init__.py index 2622641d9..0ee72d2cf 100644 --- a/SCons/Tool/ninja/__init__.py +++ b/SCons/Tool/ninja/__init__.py @@ -136,7 +136,7 @@ def ninja_builder(env, target, source): sys.stdout.write("\n") -def options(opts): +def options(opts) -> None: """ Add command line Variables for Ninja builder. """ @@ -302,7 +302,7 @@ def generate(env): # instead return something that looks more expanded. So to # continue working even if a user has done this we map both the # "bracketted" and semi-expanded versions. - def robust_rule_mapping(var, rule, tool): + def robust_rule_mapping(var, rule, tool) -> None: provider = gen_get_response_file_command(env, rule, tool) env.NinjaRuleMapping("${" + var + "}", provider) @@ -459,7 +459,7 @@ def generate(env): # In the future we may be able to use this to actually cache the build.ninja # file once we have the upstream support for referencing SConscripts as File # nodes. - def ninja_execute(self): + def ninja_execute(self) -> None: target = self.targets[0] if target.get_env().get('NINJA_SKIP'): @@ -475,7 +475,7 @@ def generate(env): # date-ness. SCons.Script.Main.BuildTask.needs_execute = lambda x: True - def ninja_Set_Default_Targets(env, tlist): + def ninja_Set_Default_Targets(env, tlist) -> None: """ Record the default targets if they were ever set by the user. Ninja will need to write the default targets and make sure not to include diff --git a/SCons/Tool/ninja/ninja_daemon_build.py b/SCons/Tool/ninja/ninja_daemon_build.py index 32c375dfd..f198d773c 100644 --- a/SCons/Tool/ninja/ninja_daemon_build.py +++ b/SCons/Tool/ninja/ninja_daemon_build.py @@ -55,7 +55,7 @@ logging.basicConfig( ) -def log_error(msg): +def log_error(msg) -> None: logging.debug(msg) sys.stderr.write(msg) diff --git a/SCons/Tool/ninja/ninja_run_daemon.py b/SCons/Tool/ninja/ninja_run_daemon.py index 08029a29f..666be0f71 100644 --- a/SCons/Tool/ninja/ninja_run_daemon.py +++ b/SCons/Tool/ninja/ninja_run_daemon.py @@ -61,7 +61,7 @@ logging.basicConfig( level=logging.DEBUG, ) -def log_error(msg): +def log_error(msg) -> None: logging.debug(msg) sys.stderr.write(msg) diff --git a/SCons/Tool/ninja/ninja_scons_daemon.py b/SCons/Tool/ninja/ninja_scons_daemon.py index 6802af293..2084097fc 100644 --- a/SCons/Tool/ninja/ninja_scons_daemon.py +++ b/SCons/Tool/ninja/ninja_scons_daemon.py @@ -77,11 +77,11 @@ logging.basicConfig( ) -def daemon_log(message): +def daemon_log(message) -> None: logging.debug(message) -def custom_readlines(handle, line_separator="\n", chunk_size=1): +def custom_readlines(handle, line_separator: str="\n", chunk_size: int=1): buf = "" while not handle.closed: data = handle.read(chunk_size) @@ -98,7 +98,7 @@ def custom_readlines(handle, line_separator="\n", chunk_size=1): buf = "" -def custom_readerr(handle, line_separator="\n", chunk_size=1): +def custom_readerr(handle, line_separator: str="\n", chunk_size: int=1): buf = "" while not handle.closed: data = handle.read(chunk_size) @@ -112,13 +112,13 @@ def custom_readerr(handle, line_separator="\n", chunk_size=1): yield chunk + line_separator -def enqueue_output(out, queue): +def enqueue_output(out, queue) -> None: for line in iter(custom_readlines(out)): queue.put(line) out.close() -def enqueue_error(err, queue): +def enqueue_error(err, queue) -> None: for line in iter(custom_readerr(err)): queue.put(line) err.close() @@ -143,7 +143,7 @@ class StateInfo: shared_state = StateInfo() -def sigint_func(signum, frame): +def sigint_func(signum, frame) -> None: global shared_state shared_state.daemon_needs_to_shutdown = True @@ -264,7 +264,7 @@ logging.debug( keep_alive_timer = timer() -def server_thread_func(): +def server_thread_func() -> None: global shared_state class S(http.server.BaseHTTPRequestHandler): def do_GET(self): @@ -284,7 +284,7 @@ def server_thread_func(): daemon_log(f"Got request: {build[0]}") input_q.put(build[0]) - def pred(): + def pred() -> bool: return build[0] in shared_state.finished_building with building_cv: @@ -329,7 +329,7 @@ def server_thread_func(): daemon_log("SERVER ERROR: " + traceback.format_exc()) raise - def log_message(self, format, *args): + def log_message(self, format, *args) -> None: return socketserver.TCPServer.allow_reuse_address = True diff --git a/SCons/Tool/packaging/__init__.py b/SCons/Tool/packaging/__init__.py index 6fe01c190..c8e530de7 100644 --- a/SCons/Tool/packaging/__init__.py +++ b/SCons/Tool/packaging/__init__.py @@ -199,7 +199,7 @@ def Package(env, target=None, source=None, **kw): # added = False -def generate(env): +def generate(env) -> None: global added if not added: added = True @@ -218,11 +218,11 @@ def generate(env): env['BUILDERS']['Tag'] = Tag -def exists(env): +def exists(env) -> int: return 1 -def options(opts): +def options(opts) -> None: opts.AddVariables( EnumVariable('PACKAGETYPE', 'the type of package to create.', @@ -235,7 +235,7 @@ def options(opts): # Internal utility functions # -def copy_attr(f1, f2): +def copy_attr(f1, f2) -> None: """ Copies the special packaging file attributes from f1 to f2. """ if f1._tags: @@ -247,7 +247,7 @@ def copy_attr(f1, f2): for attr in pattrs: f2.Tag(attr, f1.GetTag(attr)) -def putintopackageroot(target, source, env, pkgroot, honor_install_location=1): +def putintopackageroot(target, source, env, pkgroot, honor_install_location: int=1): """ Copies all source files to the directory given in pkgroot. If honor_install_location is set and the copied source file has an @@ -298,7 +298,7 @@ def stripinstallbuilder(target, source, env): It also warns about files which have no install builder attached. """ - def has_no_install_location(file): + def has_no_install_location(file) -> bool: return not (file.has_builder() and hasattr(file.builder, 'name') and file.builder.name in ["InstallBuilder", "InstallAsBuilder"]) diff --git a/SCons/Tool/packaging/ipk.py b/SCons/Tool/packaging/ipk.py index ac8b992bb..930eacbec 100644 --- a/SCons/Tool/packaging/ipk.py +++ b/SCons/Tool/packaging/ipk.py @@ -105,7 +105,7 @@ def gen_ipk_dir(proot, source, env, kw): # the packageroot directory does now contain the specfiles. return proot -def build_specfiles(source, target, env): +def build_specfiles(source, target, env) -> int: """ Filter the targets for the needed files and use the variables in env to create the specfile. """ diff --git a/SCons/Tool/packaging/msi.py b/SCons/Tool/packaging/msi.py index 458e81f83..a0bed8f2a 100644 --- a/SCons/Tool/packaging/msi.py +++ b/SCons/Tool/packaging/msi.py @@ -130,7 +130,7 @@ def create_feature_dict(files): """ dict = {} - def add_to_dict( feature, file ): + def add_to_dict( feature, file ) -> None: if not SCons.Util.is_List( feature ): feature = [ feature ] @@ -150,7 +150,7 @@ def create_feature_dict(files): return dict -def generate_guids(root): +def generate_guids(root) -> None: """ generates globally unique identifiers for parts of the xml which need them. @@ -179,7 +179,7 @@ def generate_guids(root): node.attributes[attribute] = str(hash) -def string_wxsfile(target, source, env): +def string_wxsfile(target, source, env) -> str: return "building WiX file %s" % target[0].path def build_wxsfile(target, source, env): @@ -266,7 +266,7 @@ def create_default_directory_layout(root, NAME, VERSION, VENDOR, filename_set): # # mandatory and optional file tags # -def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set, id_set): +def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set, id_set) -> None: """ Builds the Component sections of the wxs file with their included files. Files need to be specified in 8.3 format and in the long name format, long @@ -358,7 +358,7 @@ def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set, # # additional functions # -def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set): +def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set) -> None: """ This function creates the <features> tag based on the supplied xml tree. This is achieved by finding all <component>s and adding them to a default target. @@ -413,7 +413,7 @@ def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set): root.getElementsByTagName('Product')[0].childNodes.append(Feature) -def build_wxsfile_default_gui(root): +def build_wxsfile_default_gui(root) -> None: """ This function adds a default GUI to the wxs file """ factory = Document() @@ -427,7 +427,7 @@ def build_wxsfile_default_gui(root): UIRef.attributes['Id'] = 'WixUI_ErrorProgressText' Product.childNodes.append(UIRef) -def build_license_file(directory, spec): +def build_license_file(directory, spec) -> None: """ Creates a License.rtf file with the content of "X_MSI_LICENSE_TEXT" in the given directory """ @@ -451,7 +451,7 @@ def build_license_file(directory, spec): # # mandatory and optional package tags # -def build_wxsfile_header_section(root, spec): +def build_wxsfile_header_section(root, spec) -> None: """ Adds the xml file node which define the package meta-data. """ # Create the needed DOM nodes and add them at the correct position in the tree. diff --git a/SCons/Tool/packaging/rpm.py b/SCons/Tool/packaging/rpm.py index cdeabcf62..a0c317229 100644 --- a/SCons/Tool/packaging/rpm.py +++ b/SCons/Tool/packaging/rpm.py @@ -317,7 +317,7 @@ class SimpleTagCompiler: "cdef ghij cdef gh ij" """ - def __init__(self, tagset, mandatory=1): + def __init__(self, tagset, mandatory: int=1) -> None: self.tagset = tagset self.mandatory = mandatory diff --git a/SCons/Tool/pdf.py b/SCons/Tool/pdf.py index 050f1a572..ddaaa8aab 100644 --- a/SCons/Tool/pdf.py +++ b/SCons/Tool/pdf.py @@ -37,7 +37,7 @@ PDFBuilder = None EpsPdfAction = SCons.Action.Action('$EPSTOPDFCOM', '$EPSTOPDFCOMSTR') -def generate(env): +def generate(env) -> None: try: env['BUILDERS']['PDF'] except KeyError: @@ -57,7 +57,7 @@ def generate(env): # put the epstopdf builder in this routine so we can add it after # the pdftex builder so that one is the default for no source suffix -def generate2(env): +def generate2(env) -> None: bld = env['BUILDERS']['PDF'] #bld.add_action('.ps', EpsPdfAction) # this is covered by direct Ghostcript action in gs.py bld.add_action('.eps', EpsPdfAction) @@ -66,7 +66,7 @@ def generate2(env): env['EPSTOPDFFLAGS'] = SCons.Util.CLVar('') env['EPSTOPDFCOM'] = '$EPSTOPDF $EPSTOPDFFLAGS ${SOURCE} --outfile=${TARGET}' -def exists(env): +def exists(env) -> int: # This only puts a skeleton Builder in place, so if someone # references this Tool directly, it's always "available." return 1 diff --git a/SCons/Tool/pdflatex.py b/SCons/Tool/pdflatex.py index fbffb2395..e3c733b97 100644 --- a/SCons/Tool/pdflatex.py +++ b/SCons/Tool/pdflatex.py @@ -49,7 +49,7 @@ def PDFLaTeXAuxFunction(target = None, source= None, env=None): PDFLaTeXAuxAction = None -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for pdflatex to an Environment.""" global PDFLaTeXAction if PDFLaTeXAction is None: diff --git a/SCons/Tool/pdftex.py b/SCons/Tool/pdftex.py index e9a0bda03..4b7707fbe 100644 --- a/SCons/Tool/pdftex.py +++ b/SCons/Tool/pdftex.py @@ -68,7 +68,7 @@ def PDFTeXLaTeXFunction(target = None, source= None, env=None): PDFTeXLaTeXAction = None -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for pdftex to an Environment.""" global PDFTeXAction if PDFTeXAction is None: diff --git a/SCons/Tool/python.py b/SCons/Tool/python.py index c61fc8d72..2820afb47 100644 --- a/SCons/Tool/python.py +++ b/SCons/Tool/python.py @@ -33,13 +33,13 @@ import SCons.Tool from SCons.Scanner.Python import PythonScanner, PythonSuffixes -def generate(env): +def generate(env) -> None: """Hook the python builder and scanner into the environment.""" for suffix in PythonSuffixes: SCons.Tool.SourceFileScanner.add_scanner(suffix, PythonScanner) -def exists(env): +def exists(env) -> bool: return True # Local Variables: diff --git a/SCons/Tool/qt.py b/SCons/Tool/qt.py index 607b58d83..376e2ba19 100644 --- a/SCons/Tool/qt.py +++ b/SCons/Tool/qt.py @@ -34,5 +34,5 @@ def generate(env): "'qt3' will be removed entirely in a future release." ) -def exists(env): +def exists(env) -> bool: return False diff --git a/SCons/Tool/qt3.py b/SCons/Tool/qt3.py index 4e6975648..d35b661a4 100644 --- a/SCons/Tool/qt3.py +++ b/SCons/Tool/qt3.py @@ -90,7 +90,7 @@ def find_platform_specific_qt3_paths(): QT3_BIN_DIR = find_platform_specific_qt3_paths() -def checkMocIncluded(target, source, env): +def checkMocIncluded(target, source, env) -> None: moc = target[0] cpp = source[0] # looks like cpp.includes is cleared before the build stage :-( @@ -116,7 +116,7 @@ class _Automoc: StaticLibraries. """ - def __init__(self, objBuilderName): + def __init__(self, objBuilderName) -> None: self.objBuilderName = objBuilderName def __call__(self, target, source, env): diff --git a/SCons/Tool/rmic.py b/SCons/Tool/rmic.py index 5c7a04066..852339703 100644 --- a/SCons/Tool/rmic.py +++ b/SCons/Tool/rmic.py @@ -104,7 +104,7 @@ RMICBuilder = SCons.Builder.Builder(action = RMICAction, target_factory = SCons.Node.FS.Dir, source_factory = SCons.Node.FS.File) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for rmic to an Environment.""" env['BUILDERS']['RMIC'] = RMICBuilder @@ -123,7 +123,7 @@ def generate(env): env['RMICCOM'] = '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}' env['JAVACLASSSUFFIX'] = '.class' -def exists(env): +def exists(env) -> int: # As reported by Jan Nijtmans in issue #2730, the simple # return env.Detect('rmic') # doesn't always work during initialization. For now, we diff --git a/SCons/Tool/rpcgen.py b/SCons/Tool/rpcgen.py index 5ed565862..d5f514a44 100644 --- a/SCons/Tool/rpcgen.py +++ b/SCons/Tool/rpcgen.py @@ -42,7 +42,7 @@ rpcgen_header = cmd % ('h', '$RPCGENHEADERFLAGS') rpcgen_service = cmd % ('m', '$RPCGENSERVICEFLAGS') rpcgen_xdr = cmd % ('c', '$RPCGENXDRFLAGS') -def generate(env): +def generate(env) -> None: """Add RPCGEN Builders and construction variables for an Environment.""" client = Builder(action=rpcgen_client, suffix='_clnt.c', src_suffix='.x') diff --git a/SCons/Tool/rpm.py b/SCons/Tool/rpm.py index 2fd802a67..94f5e574a 100644 --- a/SCons/Tool/rpm.py +++ b/SCons/Tool/rpm.py @@ -46,7 +46,7 @@ import SCons.Util import SCons.Action import SCons.Defaults -def get_cmd(source, env): +def get_cmd(source, env) -> str: tar_file_with_included_specfile = source if SCons.Util.is_List(source): tar_file_with_included_specfile = source[0] @@ -110,7 +110,7 @@ RpmBuilder = SCons.Builder.Builder(action = SCons.Action.Action('$RPMCOM', '$RPM -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for rpm to an Environment.""" try: bld = env['BUILDERS']['Rpm'] diff --git a/SCons/Tool/rpmutils.py b/SCons/Tool/rpmutils.py index 2c4fb3220..209fcea3e 100644 --- a/SCons/Tool/rpmutils.py +++ b/SCons/Tool/rpmutils.py @@ -437,7 +437,7 @@ arch_canon = { # End of rpmrc dictionaries (Marker, don't change or remove!) -def defaultMachine(use_rpm_default=True): +def defaultMachine(use_rpm_default: bool=True): """ Return the canonicalized machine name. """ if use_rpm_default: @@ -471,7 +471,7 @@ def defaultNames(): """ Return the canonicalized machine and system name. """ return defaultMachine(), defaultSystem() -def updateRpmDicts(rpmrc, pyfile): +def updateRpmDicts(rpmrc, pyfile) -> None: """ Read the given rpmrc file with RPM definitions and update the info dictionaries in the file pyfile with it. The arguments will usually be 'rpmrc.in' from a recent RPM source @@ -531,10 +531,10 @@ def updateRpmDicts(rpmrc, pyfile): except: pass -def usage(): +def usage() -> None: print("rpmutils.py rpmrc.in rpmutils.py") -def main(): +def main() -> None: import sys if len(sys.argv) < 3: diff --git a/SCons/Tool/sgiar.py b/SCons/Tool/sgiar.py index 54f8b7b67..72ce3766b 100644 --- a/SCons/Tool/sgiar.py +++ b/SCons/Tool/sgiar.py @@ -39,7 +39,7 @@ import SCons.Defaults import SCons.Tool import SCons.Util -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ar to an Environment.""" SCons.Tool.createStaticLibBuilder(env) diff --git a/SCons/Tool/sgicc.py b/SCons/Tool/sgicc.py index 94a049769..7950d1074 100644 --- a/SCons/Tool/sgicc.py +++ b/SCons/Tool/sgicc.py @@ -35,7 +35,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" from . import cc -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for gcc to an Environment.""" cc.generate(env) diff --git a/SCons/Tool/sgicxx.py b/SCons/Tool/sgicxx.py index 48b04ea92..796f7ab1d 100644 --- a/SCons/Tool/sgicxx.py +++ b/SCons/Tool/sgicxx.py @@ -40,7 +40,7 @@ cplusplus = SCons.Tool.cxx #cplusplus = __import__('cxx', globals(), locals(), []) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for SGI MIPS C++ to an Environment.""" cplusplus.generate(env) diff --git a/SCons/Tool/sgilink.py b/SCons/Tool/sgilink.py index e92c7b991..f66ad5ab1 100644 --- a/SCons/Tool/sgilink.py +++ b/SCons/Tool/sgilink.py @@ -36,7 +36,7 @@ from . import link linkers = ['CC', 'cc'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for MIPSPro to an Environment.""" link.generate(env) diff --git a/SCons/Tool/sunar.py b/SCons/Tool/sunar.py index 266e91493..03223b636 100644 --- a/SCons/Tool/sunar.py +++ b/SCons/Tool/sunar.py @@ -38,7 +38,7 @@ import SCons.Defaults import SCons.Tool import SCons.Util -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for ar to an Environment.""" SCons.Tool.createStaticLibBuilder(env) diff --git a/SCons/Tool/suncc.py b/SCons/Tool/suncc.py index 4651219bd..4ef023158 100644 --- a/SCons/Tool/suncc.py +++ b/SCons/Tool/suncc.py @@ -36,7 +36,7 @@ import SCons.Util from . import cc -def generate(env): +def generate(env) -> None: """ Add Builders and construction variables for Forte C and C++ compilers to an Environment. diff --git a/SCons/Tool/suncxx.py b/SCons/Tool/suncxx.py index 7c4b0941d..51dc3731e 100644 --- a/SCons/Tool/suncxx.py +++ b/SCons/Tool/suncxx.py @@ -121,7 +121,7 @@ def get_cppc(env): return (cppcPath, 'CC', 'CC', cppcVersion) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for SunPRO C++.""" path, cxx, shcxx, version = get_cppc(env) if path: diff --git a/SCons/Tool/sunf77.py b/SCons/Tool/sunf77.py index 20d18938f..efeb488a2 100644 --- a/SCons/Tool/sunf77.py +++ b/SCons/Tool/sunf77.py @@ -39,7 +39,7 @@ from .FortranCommon import add_all_to_env compilers = ['sunf77', 'f77'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for sunf77 to an Environment.""" add_all_to_env(env) diff --git a/SCons/Tool/sunf90.py b/SCons/Tool/sunf90.py index ce1697c34..4ce03c19a 100644 --- a/SCons/Tool/sunf90.py +++ b/SCons/Tool/sunf90.py @@ -39,7 +39,7 @@ from .FortranCommon import add_all_to_env compilers = ['sunf90', 'f90'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for sun f90 compiler to an Environment.""" add_all_to_env(env) diff --git a/SCons/Tool/sunf95.py b/SCons/Tool/sunf95.py index 218569c0b..273987b77 100644 --- a/SCons/Tool/sunf95.py +++ b/SCons/Tool/sunf95.py @@ -39,7 +39,7 @@ from .FortranCommon import add_all_to_env compilers = ['sunf95', 'f95'] -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for sunf95 to an Environment.""" add_all_to_env(env) diff --git a/SCons/Tool/sunlink.py b/SCons/Tool/sunlink.py index b0c9816e6..c86d7c209 100644 --- a/SCons/Tool/sunlink.py +++ b/SCons/Tool/sunlink.py @@ -55,7 +55,7 @@ for d in dirs: break -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for Forte to an Environment.""" link.generate(env) diff --git a/SCons/Tool/swig.py b/SCons/Tool/swig.py index ff0c80d44..aefd7cbaa 100644 --- a/SCons/Tool/swig.py +++ b/SCons/Tool/swig.py @@ -46,7 +46,7 @@ swigs = [ 'swig', 'swig3.0', 'swig2.0' ] SwigAction = SCons.Action.Action('$SWIGCOM', '$SWIGCOMSTR') -def swigSuffixEmitter(env, source): +def swigSuffixEmitter(env, source) -> str: if '-c++' in SCons.Util.CLVar(env.subst("$SWIGFLAGS", source=source)): return '$SWIGCXXFILESUFFIX' else: @@ -78,7 +78,7 @@ def _find_modules(src): directors = directors or 'directors' in m[0] return mnames, directors -def _add_director_header_targets(target, env): +def _add_director_header_targets(target, env) -> None: # Directors only work with C++ code, not C suffix = env.subst(env['SWIGCXXFILESUFFIX']) # For each file ending in SWIGCXXFILESUFFIX, add a new target director @@ -158,7 +158,7 @@ def _get_swig_version(env, swig): return version -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for swig to an Environment.""" c_file, cxx_file = SCons.Tool.createCFileBuilders(env) diff --git a/SCons/Tool/tar.py b/SCons/Tool/tar.py index 25937811c..ba7f45cb4 100644 --- a/SCons/Tool/tar.py +++ b/SCons/Tool/tar.py @@ -50,7 +50,7 @@ TarBuilder = SCons.Builder.Builder(action = TarAction, multi = 1) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for tar to an Environment.""" try: bld = env['BUILDERS']['Tar'] diff --git a/SCons/Tool/tex.py b/SCons/Tool/tex.py index 0a688f58a..72526c32e 100644 --- a/SCons/Tool/tex.py +++ b/SCons/Tool/tex.py @@ -149,11 +149,11 @@ _null = SCons.Scanner.LaTeX._null modify_env_var = SCons.Scanner.LaTeX.modify_env_var -def check_file_error_message(utility, filename='log'): +def check_file_error_message(utility, filename: str='log') -> None: msg = '%s returned an error, check the %s file\n' % (utility, filename) sys.stdout.write(msg) -def FindFile(name,suffixes,paths,env,requireExt=False): +def FindFile(name,suffixes,paths,env,requireExt: bool=False): if requireExt: name,ext = SCons.Util.splitext(name) # if the user gave an extension use it. @@ -253,7 +253,7 @@ def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None # .aux files already processed by BibTex already_bibtexed = [] - def check_content_hash(filenode, suffix): + def check_content_hash(filenode, suffix) -> bool: """ Routine to update content hash and compare """ @@ -840,7 +840,7 @@ def tex_emitter_core(target, source, env, graphics_extensions): TeXLaTeXAction = None -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for TeX to an Environment.""" global TeXLaTeXAction @@ -859,7 +859,7 @@ def generate(env): bld.add_action('.tex', TeXLaTeXAction) bld.add_emitter('.tex', tex_eps_emitter) -def generate_darwin(env): +def generate_darwin(env) -> None: try: environ = env['ENV'] except KeyError: @@ -874,7 +874,7 @@ def generate_darwin(env): if ospath: env.AppendENVPath('PATH', ospath) -def generate_common(env): +def generate_common(env) -> None: """Add internal Builders and construction variables for LaTeX to an Environment.""" # Add OSX system paths so TeX tools can be found diff --git a/SCons/Tool/textfile.py b/SCons/Tool/textfile.py index 0ec31d8f7..9d98644c4 100644 --- a/SCons/Tool/textfile.py +++ b/SCons/Tool/textfile.py @@ -137,11 +137,11 @@ def _action(target, source, env): target_file.close() -def _strfunc(target, source, env): +def _strfunc(target, source, env) -> str: return "Creating '%s'" % target[0] -def _convert_list_R(newlist, sources): +def _convert_list_R(newlist, sources) -> None: for elem in sources: if is_Sequence(elem): _convert_list_R(newlist, elem) @@ -181,7 +181,7 @@ _subst_builder = SCons.Builder.Builder( ) -def generate(env): +def generate(env) -> None: env['LINESEPARATOR'] = LINESEP # os.linesep env['BUILDERS']['Textfile'] = _text_builder env['TEXTFILEPREFIX'] = '' @@ -192,7 +192,7 @@ def generate(env): env['FILE_ENCODING'] = env.get('FILE_ENCODING', 'utf-8') -def exists(env): +def exists(env) -> int: return 1 # Local Variables: diff --git a/SCons/Tool/tlib.py b/SCons/Tool/tlib.py index 33adb576b..8b0e6ddad 100644 --- a/SCons/Tool/tlib.py +++ b/SCons/Tool/tlib.py @@ -33,7 +33,7 @@ import SCons.Tool import SCons.Tool.bcc32 import SCons.Util -def generate(env): +def generate(env) -> None: SCons.Tool.bcc32.findIt('tlib', env) """Add Builders and construction variables for ar to an Environment.""" SCons.Tool.createStaticLibBuilder(env) diff --git a/SCons/Tool/wix.py b/SCons/Tool/wix.py index 04136ce8e..617abf273 100644 --- a/SCons/Tool/wix.py +++ b/SCons/Tool/wix.py @@ -36,7 +36,7 @@ import SCons.Builder import SCons.Action import os -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for WiX to an Environment.""" if not exists(env): return diff --git a/SCons/Tool/wixTests.py b/SCons/Tool/wixTests.py index 5b255d932..26b2295b8 100644 --- a/SCons/Tool/wixTests.py +++ b/SCons/Tool/wixTests.py @@ -41,7 +41,7 @@ test.write('light.exe', 'rem this is light') os.environ['PATH'] += os.pathsep + test.workdir class WixTestCase(unittest.TestCase): - def test_vars(self): + def test_vars(self) -> None: """Test that WiX tool adds vars""" env = Environment(tools=['wix']) assert env['WIXCANDLE'] is not None diff --git a/SCons/Tool/xgettext.py b/SCons/Tool/xgettext.py index ed76e2552..f04c6a6a1 100644 --- a/SCons/Tool/xgettext.py +++ b/SCons/Tool/xgettext.py @@ -51,7 +51,7 @@ class _CmdRunner: variables. It also provides `strfunction()` method, which shall be used by scons Action objects to print command string. """ - def __init__(self, command, commandstr=None): + def __init__(self, command, commandstr=None) -> None: self.out = None self.err = None self.status = None @@ -169,7 +169,7 @@ class _POTBuilder(BuilderBase): return BuilderBase._execute(self, env, target, source, *args) -def _scan_xgettext_from_files(target, source, env, files=None, path=None): +def _scan_xgettext_from_files(target, source, env, files=None, path=None) -> int: """ Parses `POTFILES.in`-like file and returns list of extracted file names. """ if files is None: @@ -257,7 +257,7 @@ def _POTUpdateBuilder(env, **kw): return _POTBuilder(**kw) -def generate(env, **kw): +def generate(env, **kw) -> None: """ Generate `xgettext` tool """ if sys.platform == 'win32': diff --git a/SCons/Tool/yacc.py b/SCons/Tool/yacc.py index 42ef1db03..67ecd8678 100644 --- a/SCons/Tool/yacc.py +++ b/SCons/Tool/yacc.py @@ -125,7 +125,7 @@ def yyEmitter(target, source, env) -> tuple: return _yaccEmitter(target, source, env, ['.yy'], '$YACCHXXFILESUFFIX') -def get_yacc_path(env, append_paths=False) -> Optional[str]: +def get_yacc_path(env, append_paths: bool=False) -> Optional[str]: """ Returns the path to the yacc tool, searching several possible names. diff --git a/SCons/Tool/zip.py b/SCons/Tool/zip.py index f3d38fe7a..4c04afceb 100644 --- a/SCons/Tool/zip.py +++ b/SCons/Tool/zip.py @@ -57,7 +57,7 @@ def _create_zipinfo_for_file(fname, arcname, date_time, compression): return zinfo -def zip_builder(target, source, env): +def zip_builder(target, source, env) -> None: compression = env.get('ZIPCOMPRESSION', zipfile.ZIP_STORED) zip_root = str(env.get('ZIPROOT', '')) date_time = env.get('ZIP_OVERRIDE_TIMESTAMP') @@ -94,7 +94,7 @@ ZipBuilder = SCons.Builder.Builder(action=SCons.Action.Action('$ZIPCOM', '$ZIPCO multi=1) -def generate(env): +def generate(env) -> None: """Add Builders and construction variables for zip to an Environment.""" try: bld = env['BUILDERS']['Zip'] @@ -110,7 +110,7 @@ def generate(env): env['ZIPROOT'] = SCons.Util.CLVar('') -def exists(env): +def exists(env) -> bool: return True # Local Variables: |