Skip to content

Commit dd3c9bc

Browse files
committed
Ruff rules for comprehensions, performance, and simplicity
1 parent 06cebfc commit dd3c9bc

23 files changed

+80
-162
lines changed

tools/building.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def side_module_external_deps(external_symbols):
114114
sym = demangle_c_symbol_name(sym)
115115
if sym in external_symbols:
116116
deps = deps.union(external_symbols[sym])
117-
return sorted(list(deps))
117+
return sorted(deps)
118118

119119

120120
def create_stub_object(external_symbols):
@@ -184,12 +184,11 @@ def lld_flags_for_executable(external_symbols):
184184
c_exports += side_module_external_deps(external_symbols)
185185
for export in c_exports:
186186
if settings.ERROR_ON_UNDEFINED_SYMBOLS:
187-
cmd.append('--export=' + export)
187+
cmd.append(f'--export={export}')
188188
else:
189-
cmd.append('--export-if-defined=' + export)
189+
cmd.append(f'--export-if-defined={export}')
190190

191-
for e in settings.EXPORT_IF_DEFINED:
192-
cmd.append('--export-if-defined=' + e)
191+
cmd.extend(f'--export-if-defined={e}' for e in settings.EXPORT_IF_DEFINED)
193192

194193
if settings.RELOCATABLE:
195194
cmd.append('--experimental-pic')
@@ -426,10 +425,7 @@ def eval_ctors(js_file, wasm_file, debug_info):
426425
if kept_ctors:
427426
args += ['--kept-exports=' + ','.join(kept_ctors)]
428427
else:
429-
if settings.EXPECT_MAIN:
430-
ctor = '_start'
431-
else:
432-
ctor = '_initialize'
428+
ctor = '_start' if settings.EXPECT_MAIN else '_initialize'
433429
args = ['--ctors=' + ctor, '--kept-exports=' + ctor]
434430
if settings.EVAL_CTORS == 2:
435431
args += ['--ignore-external-input']
@@ -749,10 +745,10 @@ def minify_wasm_js(js_file, wasm_file, expensive_optimizations, debug_info):
749745

750746

751747
def is_internal_global(name):
752-
internal_start_stop_symbols = set(['__start_em_asm', '__stop_em_asm',
753-
'__start_em_js', '__stop_em_js',
754-
'__start_em_lib_deps', '__stop_em_lib_deps',
755-
'__em_lib_deps'])
748+
internal_start_stop_symbols = {'__start_em_asm', '__stop_em_asm',
749+
'__start_em_js', '__stop_em_js',
750+
'__start_em_lib_deps', '__stop_em_lib_deps',
751+
'__em_lib_deps'}
756752
internal_prefixes = ('__em_js__', '__em_lib_deps')
757753
return name in internal_start_stop_symbols or any(name.startswith(p) for p in internal_prefixes)
758754

tools/colored_logger.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,7 @@ def add_coloring_to_emit_ansi(fn):
9999
# add methods we need to the class
100100
def new(*args):
101101
levelno = args[1].levelno
102-
if levelno >= 50:
103-
color = '\x1b[31m' # red
104-
elif levelno >= 40:
102+
if levelno >= 40:
105103
color = '\x1b[31m' # red
106104
elif levelno >= 30:
107105
color = '\x1b[33m' # yellow

tools/determinism_checker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def run():
2424
def write(data, subdir):
2525
if not os.path.exists(subdir):
2626
os.mkdir(subdir)
27-
for relevant_file in data.keys():
27+
for relevant_file in data:
2828
Path(os.path.join(subdir, relevant_file)).write_text(data[relevant_file])
2929

3030

tools/emcoverage.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from glob import glob
3838

3939
import coverage.cmdline # type: ignore
40+
import contextlib
4041

4142
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
4243

@@ -62,10 +63,8 @@ def main():
6263
if sys.argv[1] in ('html', 'report', 'xml'):
6364
old_argv = sys.argv
6465
sys.argv = ['coverage', 'combine'] + glob(os.path.join(store, '*'))
65-
try:
66+
with contextlib.suppress(SystemExit):
6667
coverage.cmdline.main()
67-
except SystemExit:
68-
pass
6968
sys.argv = old_argv + ['-i']
7069
return coverage.cmdline.main()
7170

tools/emdump.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ def merge_entry_to_existing(existing_data, new_entry, total_source_set_size):
162162
name = new_entry['unminified_name']
163163
if name in existing_data:
164164
ex = existing_data[name]
165-
num_times_occurs_1 = ex['num_times_occurs'] if 'num_times_occurs' in ex else 1
166-
num_times_occurs_2 = new_entry['num_times_occurs'] if 'num_times_occurs' in new_entry else 1
165+
num_times_occurs_1 = ex.get('num_times_occurs', 1)
166+
num_times_occurs_2 = new_entry.get('num_times_occurs', 1)
167167
existing_data[name] = {
168168
'lines': ex['lines'] + new_entry['lines'],
169169
'bytes': ex['bytes'] + new_entry['bytes'],
@@ -212,7 +212,7 @@ def analyze_javascript_file_contents(filename, file_contents, total_source_set_s
212212
if asm_start >= 0:
213213
asm_start_brace = file_contents.rfind('{', 0, asm_start)
214214
if asm_start_brace >= 0:
215-
asm_end_brace = brace_map[asm_start_brace] if asm_start_brace in brace_map else file_len
215+
asm_end_brace = brace_map.get(asm_start_brace, file_len)
216216

217217
func_pos = -1
218218
var_pos = -1
@@ -516,7 +516,7 @@ def print_symbol_info(data, total_source_set_size):
516516
continue
517517
if options.only_common and (not e['in_set_1'] or not e['in_set_2']):
518518
continue
519-
prev_bytes = e['prev_bytes'] if 'prev_bytes' in e else 0
519+
prev_bytes = e.get('prev_bytes', 0)
520520
if max(e['bytes'], prev_bytes) < options.filter_size:
521521
continue
522522
if e['bytes'] == prev_bytes and options.only_changes:

tools/emscripten.py

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def set_memory(static_bump):
225225

226226
def report_missing_exports_wasm_only(metadata):
227227
if diagnostics.is_enabled('undefined'):
228-
defined_symbols = set(asmjs_mangle(e) for e in metadata.all_exports)
228+
defined_symbols = {asmjs_mangle(e) for e in metadata.all_exports}
229229
missing = set(settings.USER_EXPORTS) - defined_symbols
230230
for symbol in sorted(missing):
231231
diagnostics.warning('undefined', f'undefined exported symbol: "{symbol}"')
@@ -235,7 +235,7 @@ def report_missing_exports(js_symbols):
235235
if diagnostics.is_enabled('undefined'):
236236
# Report any symbol that was explicitly exported but is present neither
237237
# as a native function nor as a JS library function.
238-
defined_symbols = set(asmjs_mangle(e) for e in settings.WASM_EXPORTS).union(js_symbols)
238+
defined_symbols = {asmjs_mangle(e) for e in settings.WASM_EXPORTS}.union(js_symbols)
239239
missing = set(settings.USER_EXPORTS) - defined_symbols
240240
for symbol in sorted(missing):
241241
diagnostics.warning('undefined', f'undefined exported symbol: "{symbol}"')
@@ -346,10 +346,7 @@ def emscript(in_wasm, out_wasm, outfile_js, js_syms, finalize=True, base_metadat
346346

347347
for em_js_func, raw in metadata.em_js_funcs.items():
348348
c_sig = raw.split('<::>')[0].strip('()')
349-
if not c_sig or c_sig == 'void':
350-
c_sig = []
351-
else:
352-
c_sig = c_sig.split(',')
349+
c_sig = [] if (c_sig or 'void') == 'void' else c_sig.split(',')
353350
if em_js_func in import_map:
354351
imp = import_map[em_js_func]
355352
assert imp.kind == webassembly.ExternType.FUNC
@@ -646,11 +643,8 @@ def create_tsd_exported_runtime_methods(metadata):
646643
tsc_output_file = in_temp('jsdoc.d.ts')
647644
utils.write_file(js_doc_file, js_doc)
648645
tsc = shutil.which('tsc')
649-
if tsc:
650-
# Use the full path from the which command so windows can find tsc.
651-
tsc = [tsc]
652-
else:
653-
tsc = shared.get_npm_cmd('tsc')
646+
# Use the full path from the which command so windows can find tsc.
647+
tsc = [tsc] if tsc else shared.get_npm_cmd('tsc')
654648
cmd = tsc + ['--outFile', tsc_output_file, '--declaration', '--emitDeclarationOnly', '--allowJs', js_doc_file]
655649
shared.check_call(cmd, cwd=path_from_root())
656650
return utils.read_file(tsc_output_file)
@@ -699,15 +693,12 @@ def create_asm_consts(metadata):
699693
asm_consts = {}
700694
for addr, const in metadata.em_asm_consts.items():
701695
body = trim_asm_const_body(const)
702-
args = []
703696
max_arity = 16
704697
arity = 0
705698
for i in range(max_arity):
706-
if ('$' + str(i)) in const:
699+
if f'${i}' in const:
707700
arity = i + 1
708-
for i in range(arity):
709-
args.append('$' + str(i))
710-
args = ', '.join(args)
701+
args = ', '.join(f"${i}" for i in range(arity))
711702
if 'arguments' in body:
712703
# arrow functions don't bind `arguments` so we have to use
713704
# the old function syntax in this case
@@ -717,8 +708,7 @@ def create_asm_consts(metadata):
717708
if settings.RELOCATABLE:
718709
addr += settings.GLOBAL_BASE
719710
asm_consts[addr] = func
720-
asm_consts = [(key, value) for key, value in asm_consts.items()]
721-
asm_consts.sort()
711+
asm_consts = sorted(asm_consts.items())
722712
return asm_consts
723713

724714

@@ -762,10 +752,7 @@ def create_em_js(metadata):
762752
assert separator in raw
763753
args, body = raw.split(separator, 1)
764754
args = args[1:-1]
765-
if args == 'void':
766-
args = []
767-
else:
768-
args = args.split(',')
755+
args = [] if args == 'void' else args.split(',')
769756
arg_names = [arg.split()[-1].replace('*', '') for arg in args if arg]
770757
args = ','.join(arg_names)
771758
func = f'function {name}({args}) {body}'
@@ -836,10 +823,8 @@ def add_standard_wasm_imports(send_items_map):
836823

837824
def create_sending(metadata, library_symbols):
838825
# Map of wasm imports to mangled/external/JS names
839-
send_items_map = {}
826+
send_items_map = {name: name for name in metadata.invoke_funcs}
840827

841-
for name in metadata.invoke_funcs:
842-
send_items_map[name] = name
843828
for name in metadata.imports:
844829
if name in metadata.em_js_funcs:
845830
send_items_map[name] = name
@@ -903,9 +888,7 @@ def install_wrapper(sym):
903888
# pthread_self and _emscripten_proxy_execute_task_queue are currently called in some
904889
# cases after the runtime has exited.
905890
# TODO: Look into removing these, and improving our robustness around thread termination.
906-
if sym in ('__trap', 'pthread_self', '_emscripten_proxy_execute_task_queue'):
907-
return False
908-
return True
891+
return sym not in {'__trap', 'pthread_self', '_emscripten_proxy_execute_task_queue'}
909892

910893
for name, types in function_exports.items():
911894
nargs = len(types.params)

tools/experimental/reproduceriter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
window_location = sys.argv[4] if len(sys.argv) >= 5 else ''
126126
on_idle = sys.argv[5] if len(sys.argv) >= 6 else ''
127127

128-
shell = not not window_location
128+
shell = bool(window_location)
129129

130130
dirs_to_drop = 0 if not os.path.dirname(first_js) else len(os.path.dirname(first_js).split('/'))
131131

tools/feature_matrix.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,16 @@ def report_missing(setting_name):
106106
setting_value = getattr(settings, setting_name)
107107
logger.debug(f'cannot use {feature.name} because {setting_name} is too old: {setting_value}')
108108

109-
if settings.MIN_CHROME_VERSION < min_versions['chrome']:
109+
if min_versions['chrome'] > settings.MIN_CHROME_VERSION:
110110
report_missing('MIN_CHROME_VERSION')
111111
return False
112-
if settings.MIN_FIREFOX_VERSION < min_versions['firefox']:
112+
if min_versions['firefox'] > settings.MIN_FIREFOX_VERSION:
113113
report_missing('MIN_FIREFOX_VERSION')
114114
return False
115-
if settings.MIN_SAFARI_VERSION < min_versions['safari']:
115+
if min_versions['safari'] > settings.MIN_SAFARI_VERSION:
116116
report_missing('MIN_SAFARI_VERSION')
117117
return False
118-
if 'node' in min_versions and settings.MIN_NODE_VERSION < min_versions['node']:
118+
if 'node' in min_versions and min_versions['node'] > settings.MIN_NODE_VERSION:
119119
report_missing('MIN_NODE_VERSION')
120120
return False
121121
return True

tools/file_packager.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,7 @@ def should_ignore(fullname):
172172
if has_hidden_attribute(fullname):
173173
return True
174174

175-
for p in excluded_patterns:
176-
if fnmatch.fnmatch(fullname, p):
177-
return True
178-
return False
175+
return any(fnmatch.fnmatch(fullname, p) for p in excluded_patterns)
179176

180177

181178
def add(mode, rootpathsrc, rootpathdst):

tools/js_optimizer.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,7 @@ def write_chunk(chunk, i):
330330

331331
with ToolchainProfiler.profile_block('sort_or_concat'):
332332
# sort functions by size, to make diffing easier and to improve aot times
333-
funcses = []
334-
for out_file in filenames:
335-
funcses.append(split_funcs(utils.read_file(out_file)))
333+
funcses = [split_funcs(utils.read_file(out_file)) for out_file in filenames]
336334
funcs = [item for sublist in funcses for item in sublist]
337335
funcses = None
338336
if not os.environ.get('EMCC_NO_OPT_SORT'):

0 commit comments

Comments
 (0)