backends/xcode: various sundry low-effort typing fixes

I slapped the obvious type annotations onto a bunch of places, and got
the errors down from 668 to 112.
pull/11864/head
Eli Schwartz 1 year ago
parent ba27c72861
commit a981433705
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 72
      mesonbuild/backend/xcodebackend.py

@ -65,7 +65,7 @@ LINKABLE_EXTENSIONS = {'.o', '.a', '.obj', '.so', '.dylib'}
class FileTreeEntry: class FileTreeEntry:
def __init__(self): def __init__(self) -> None:
self.subdirs = {} self.subdirs = {}
self.targets = [] self.targets = []
@ -75,16 +75,16 @@ class PbxItem:
self.comment = comment self.comment = comment
class PbxArray: class PbxArray:
def __init__(self): def __init__(self) -> None:
self.items = [] self.items = []
def add_item(self, item, comment=''): def add_item(self, item: T.Union[PbxArrayItem, str], comment: str = '') -> None:
if isinstance(item, PbxArrayItem): if isinstance(item, PbxArrayItem):
self.items.append(item) self.items.append(item)
else: else:
self.items.append(PbxArrayItem(item, comment)) self.items.append(PbxArrayItem(item, comment))
def write(self, ofile, indent_level): def write(self, ofile: T.TextIO, indent_level: int) -> None:
ofile.write('(\n') ofile.write('(\n')
indent_level += 1 indent_level += 1
for i in self.items: for i in self.items:
@ -96,7 +96,7 @@ class PbxArray:
ofile.write(indent_level*INDENT + ');\n') ofile.write(indent_level*INDENT + ');\n')
class PbxArrayItem: class PbxArrayItem:
def __init__(self, value, comment = ''): def __init__(self, value: str, comment: str = ''):
self.value = value self.value = value
if comment: if comment:
if '/*' in comment: if '/*' in comment:
@ -107,16 +107,16 @@ class PbxArrayItem:
self.comment = comment self.comment = comment
class PbxComment: class PbxComment:
def __init__(self, text): def __init__(self, text: str):
assert isinstance(text, str) assert isinstance(text, str)
assert '/*' not in text assert '/*' not in text
self.text = f'/* {text} */' self.text = f'/* {text} */'
def write(self, ofile, indent_level): def write(self, ofile: T.TextIO, indent_level: int) -> None:
ofile.write(f'\n{self.text}\n') ofile.write(f'\n{self.text}\n')
class PbxDictItem: class PbxDictItem:
def __init__(self, key, value, comment = ''): def __init__(self, key: str, value: T.Union[PbxArray, PbxDict, str, int], comment: str = ''):
self.key = key self.key = key
self.value = value self.value = value
if comment: if comment:
@ -128,13 +128,13 @@ class PbxDictItem:
self.comment = comment self.comment = comment
class PbxDict: class PbxDict:
def __init__(self): def __init__(self) -> None:
# This class is a bit weird, because we want to write PBX dicts in # This class is a bit weird, because we want to write PBX dicts in
# defined order _and_ we want to write intermediate comments also in order. # defined order _and_ we want to write intermediate comments also in order.
self.keys = set() self.keys = set()
self.items = [] self.items = []
def add_item(self, key, value, comment=''): def add_item(self, key: str, value: T.Union[PbxArray, PbxDict, str, int], comment: str = '') -> None:
assert key not in self.keys assert key not in self.keys
item = PbxDictItem(key, value, comment) item = PbxDictItem(key, value, comment)
self.keys.add(key) self.keys.add(key)
@ -143,14 +143,14 @@ class PbxDict:
def has_item(self, key): def has_item(self, key):
return key in self.keys return key in self.keys
def add_comment(self, comment): def add_comment(self, comment: T.Union[str, PbxComment]) -> None:
if isinstance(comment, str): if isinstance(comment, str):
self.items.append(PbxComment(str)) self.items.append(PbxComment(str))
else: else:
assert isinstance(comment, PbxComment) assert isinstance(comment, PbxComment)
self.items.append(comment) self.items.append(comment)
def write(self, ofile, indent_level): def write(self, ofile: T.TextIO, indent_level: int) -> None:
ofile.write('{\n') ofile.write('{\n')
indent_level += 1 indent_level += 1
for i in self.items: for i in self.items:
@ -197,7 +197,7 @@ class XCodeBackend(backends.Backend):
def __init__(self, build: T.Optional[build.Build], interpreter: T.Optional[Interpreter]): def __init__(self, build: T.Optional[build.Build], interpreter: T.Optional[Interpreter]):
super().__init__(build, interpreter) super().__init__(build, interpreter)
self.project_uid = self.environment.coredata.lang_guids['default'].replace('-', '')[:24] self.project_uid = self.environment.coredata.lang_guids['default'].replace('-', '')[:24]
self.buildtype = self.environment.coredata.get_option(OptionKey('buildtype')) self.buildtype = T.cast('str', self.environment.coredata.get_option(OptionKey('buildtype')))
self.project_conflist = self.gen_id() self.project_conflist = self.gen_id()
self.maingroup_id = self.gen_id() self.maingroup_id = self.gen_id()
self.all_id = self.gen_id() self.all_id = self.gen_id()
@ -230,11 +230,11 @@ class XCodeBackend(backends.Backend):
top_level_dict.write(ofile, 0) top_level_dict.write(ofile, 0)
os.replace(tmpname, ofilename) os.replace(tmpname, ofilename)
def gen_id(self): def gen_id(self) -> str:
return str(uuid.uuid4()).upper().replace('-', '')[:24] return str(uuid.uuid4()).upper().replace('-', '')[:24]
def get_target_dir(self, target): def get_target_dir(self, target):
dirname = os.path.join(target.get_subdir(), self.environment.coredata.get_option(OptionKey('buildtype'))) dirname = os.path.join(target.get_subdir(), T.cast('str', self.environment.coredata.get_option(OptionKey('buildtype'))))
#os.makedirs(os.path.join(self.environment.get_build_dir(), dirname), exist_ok=True) #os.makedirs(os.path.join(self.environment.get_build_dir(), dirname), exist_ok=True)
return dirname return dirname
@ -344,7 +344,7 @@ class XCodeBackend(backends.Backend):
xcodetype = 'sourcecode.unknown' xcodetype = 'sourcecode.unknown'
return xcodetype return xcodetype
def generate_filemap(self): def generate_filemap(self) -> None:
self.filemap = {} # Key is source file relative to src root. self.filemap = {} # Key is source file relative to src root.
self.target_filemap = {} self.target_filemap = {}
for name, t in self.build_targets.items(): for name, t in self.build_targets.items():
@ -358,10 +358,10 @@ class XCodeBackend(backends.Backend):
self.filemap[o] = self.gen_id() self.filemap[o] = self.gen_id()
self.target_filemap[name] = self.gen_id() self.target_filemap[name] = self.gen_id()
def generate_buildstylemap(self): def generate_buildstylemap(self) -> None:
self.buildstylemap = {self.buildtype: self.gen_id()} self.buildstylemap = {self.buildtype: self.gen_id()}
def generate_build_phase_map(self): def generate_build_phase_map(self) -> None:
for tname, t in self.build_targets.items(): for tname, t in self.build_targets.items():
# generate id for our own target-name # generate id for our own target-name
t.buildphasemap = {} t.buildphasemap = {}
@ -371,7 +371,7 @@ class XCodeBackend(backends.Backend):
t.buildphasemap['Resources'] = self.gen_id() t.buildphasemap['Resources'] = self.gen_id()
t.buildphasemap['Sources'] = self.gen_id() t.buildphasemap['Sources'] = self.gen_id()
def generate_build_configuration_map(self): def generate_build_configuration_map(self) -> None:
self.buildconfmap = {} self.buildconfmap = {}
for t in self.build_targets: for t in self.build_targets:
bconfs = {self.buildtype: self.gen_id()} bconfs = {self.buildtype: self.gen_id()}
@ -380,28 +380,28 @@ class XCodeBackend(backends.Backend):
bconfs = {self.buildtype: self.gen_id()} bconfs = {self.buildtype: self.gen_id()}
self.buildconfmap[t] = bconfs self.buildconfmap[t] = bconfs
def generate_project_configurations_map(self): def generate_project_configurations_map(self) -> None:
self.project_configurations = {self.buildtype: self.gen_id()} self.project_configurations = {self.buildtype: self.gen_id()}
def generate_buildall_configurations_map(self): def generate_buildall_configurations_map(self) -> None:
self.buildall_configurations = {self.buildtype: self.gen_id()} self.buildall_configurations = {self.buildtype: self.gen_id()}
def generate_test_configurations_map(self): def generate_test_configurations_map(self) -> None:
self.test_configurations = {self.buildtype: self.gen_id()} self.test_configurations = {self.buildtype: self.gen_id()}
def generate_build_configurationlist_map(self): def generate_build_configurationlist_map(self) -> None:
self.buildconflistmap = {} self.buildconflistmap = {}
for t in self.build_targets: for t in self.build_targets:
self.buildconflistmap[t] = self.gen_id() self.buildconflistmap[t] = self.gen_id()
for t in self.custom_targets: for t in self.custom_targets:
self.buildconflistmap[t] = self.gen_id() self.buildconflistmap[t] = self.gen_id()
def generate_native_target_map(self): def generate_native_target_map(self) -> None:
self.native_targets = {} self.native_targets = {}
for t in self.build_targets: for t in self.build_targets:
self.native_targets[t] = self.gen_id() self.native_targets[t] = self.gen_id()
def generate_custom_target_map(self): def generate_custom_target_map(self) -> None:
self.shell_targets = {} self.shell_targets = {}
self.custom_target_output_buildfile = {} self.custom_target_output_buildfile = {}
self.custom_target_output_fileref = {} self.custom_target_output_fileref = {}
@ -414,7 +414,7 @@ class XCodeBackend(backends.Backend):
self.custom_target_output_buildfile[o] = self.gen_id() self.custom_target_output_buildfile[o] = self.gen_id()
self.custom_target_output_fileref[o] = self.gen_id() self.custom_target_output_fileref[o] = self.gen_id()
def generate_generator_target_map(self): def generate_generator_target_map(self) -> None:
# Generator objects do not have natural unique ids # Generator objects do not have natural unique ids
# so use a counter. # so use a counter.
self.generator_fileref_ids = {} self.generator_fileref_ids = {}
@ -454,7 +454,7 @@ class XCodeBackend(backends.Backend):
self.generator_buildfile_ids[k] = buildfile_ids self.generator_buildfile_ids[k] = buildfile_ids
self.generator_fileref_ids[k] = fileref_ids self.generator_fileref_ids[k] = fileref_ids
def generate_native_frameworks_map(self): def generate_native_frameworks_map(self) -> None:
self.native_frameworks = {} self.native_frameworks = {}
self.native_frameworks_fileref = {} self.native_frameworks_fileref = {}
for t in self.build_targets.values(): for t in self.build_targets.values():
@ -464,7 +464,7 @@ class XCodeBackend(backends.Backend):
self.native_frameworks[f] = self.gen_id() self.native_frameworks[f] = self.gen_id()
self.native_frameworks_fileref[f] = self.gen_id() self.native_frameworks_fileref[f] = self.gen_id()
def generate_target_dependency_map(self): def generate_target_dependency_map(self) -> None:
self.target_dependency_map = {} self.target_dependency_map = {}
for tname, t in self.build_targets.items(): for tname, t in self.build_targets.items():
for target in t.link_targets: for target in t.link_targets:
@ -481,7 +481,7 @@ class XCodeBackend(backends.Backend):
assert k not in self.target_dependency_map assert k not in self.target_dependency_map
self.target_dependency_map[k] = self.gen_id() self.target_dependency_map[k] = self.gen_id()
def generate_pbxdep_map(self): def generate_pbxdep_map(self) -> None:
self.pbx_dep_map = {} self.pbx_dep_map = {}
self.pbx_custom_dep_map = {} self.pbx_custom_dep_map = {}
for t in self.build_targets: for t in self.build_targets:
@ -489,12 +489,12 @@ class XCodeBackend(backends.Backend):
for t in self.custom_targets: for t in self.custom_targets:
self.pbx_custom_dep_map[t] = self.gen_id() self.pbx_custom_dep_map[t] = self.gen_id()
def generate_containerproxy_map(self): def generate_containerproxy_map(self) -> None:
self.containerproxy_map = {} self.containerproxy_map = {}
for t in self.build_targets: for t in self.build_targets:
self.containerproxy_map[t] = self.gen_id() self.containerproxy_map[t] = self.gen_id()
def generate_target_file_maps(self): def generate_target_file_maps(self) -> None:
self.generate_target_file_maps_impl(self.build_targets) self.generate_target_file_maps_impl(self.build_targets)
self.generate_target_file_maps_impl(self.custom_targets) self.generate_target_file_maps_impl(self.custom_targets)
@ -528,13 +528,13 @@ class XCodeBackend(backends.Backend):
else: else:
raise RuntimeError('Unknown input type ' + str(o)) raise RuntimeError('Unknown input type ' + str(o))
def generate_build_file_maps(self): def generate_build_file_maps(self) -> None:
for buildfile in self.interpreter.get_build_def_files(): for buildfile in self.interpreter.get_build_def_files():
assert isinstance(buildfile, str) assert isinstance(buildfile, str)
self.buildfile_ids[buildfile] = self.gen_id() self.buildfile_ids[buildfile] = self.gen_id()
self.fileref_ids[buildfile] = self.gen_id() self.fileref_ids[buildfile] = self.gen_id()
def generate_source_phase_map(self): def generate_source_phase_map(self) -> None:
self.source_phase = {} self.source_phase = {}
for t in self.build_targets: for t in self.build_targets:
self.source_phase[t] = self.gen_id() self.source_phase[t] = self.gen_id()
@ -1640,7 +1640,7 @@ class XCodeBackend(backends.Backend):
quoted_args.append(a) quoted_args.append(a)
settings_dict.add_item(f'OTHER_{langname}FLAGS', '"' + ' '.join(quoted_args) + '"') settings_dict.add_item(f'OTHER_{langname}FLAGS', '"' + ' '.join(quoted_args) + '"')
def generate_xc_configurationList(self, objects_dict): def generate_xc_configurationList(self, objects_dict: PbxDict) -> None:
# FIXME: sort items # FIXME: sort items
conf_dict = PbxDict() conf_dict = PbxDict()
objects_dict.add_item(self.project_conflist, conf_dict, f'Build configuration list for PBXProject "{self.build.project_name}"') objects_dict.add_item(self.project_conflist, conf_dict, f'Build configuration list for PBXProject "{self.build.project_name}"')
@ -1709,7 +1709,7 @@ class XCodeBackend(backends.Backend):
t_dict.add_item('defaultConfigurationIsVisible', 0) t_dict.add_item('defaultConfigurationIsVisible', 0)
t_dict.add_item('defaultConfigurationName', self.buildtype) t_dict.add_item('defaultConfigurationName', self.buildtype)
def generate_prefix(self, pbxdict): def generate_prefix(self, pbxdict: PbxDict) -> PbxDict:
pbxdict.add_item('archiveVersion', '1') pbxdict.add_item('archiveVersion', '1')
pbxdict.add_item('classes', PbxDict()) pbxdict.add_item('classes', PbxDict())
pbxdict.add_item('objectVersion', '46') pbxdict.add_item('objectVersion', '46')
@ -1718,5 +1718,5 @@ class XCodeBackend(backends.Backend):
return objects_dict return objects_dict
def generate_suffix(self, pbxdict): def generate_suffix(self, pbxdict: PbxDict) -> None:
pbxdict.add_item('rootObject', self.project_uid, 'Project object') pbxdict.add_item('rootObject', self.project_uid, 'Project object')

Loading…
Cancel
Save