From 5ab46748f5cfaf361d64babe25d4102423e7d487 Mon Sep 17 00:00:00 2001 From: Herbert Schilling Date: Mon, 6 Jul 2026 13:07:38 -0400 Subject: [PATCH 1/2] Replace pprint + ruff/autopep8 formatting with custom recursive formatter Remove external tool dependencies (ruff, autopep8) and stdlib pprint in create_phase_info by introducing _format_phase_info_value, which produces consistently readable output without requiring any installed formatters. --- aviary/interface/graphical_input.py | 46 ++++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/aviary/interface/graphical_input.py b/aviary/interface/graphical_input.py index 24f8817f45..ef4c4dce6e 100644 --- a/aviary/interface/graphical_input.py +++ b/aviary/interface/graphical_input.py @@ -2,9 +2,6 @@ import json import os import platform -import pprint -import shutil -import subprocess import tkinter as tk # base tkinter import tkinter.ttk as ttk # used for combobox from tkinter import filedialog, font, messagebox @@ -24,6 +21,32 @@ from numpy import trapezoid as trapz +def _format_phase_info_value(value, indent_level): + indent = ' ' * indent_level + inner = ' ' * (indent_level + 1) + + if isinstance(value, dict): + if not value: + return '{}' + lines = ['{\n'] + for k, v in value.items(): + lines.append(f"{inner}{k!r}: {_format_phase_info_value(v, indent_level + 1)},\n") + lines.append(f"{indent}}}") + return ''.join(lines) + + if isinstance(value, (list, tuple)): + open_b, close_b = ('[', ']') if isinstance(value, list) else ('(', ')') + if not value: + return open_b + close_b + items = [_format_phase_info_value(item, indent_level + 1) for item in value] + one_line = open_b + ', '.join(items) + close_b + if len(one_line) <= 60: + return one_line + return open_b + '\n' + ''.join(f"{inner}{item},\n" for item in items) + f"{indent}{close_b}" + + return repr(value) + + def get_screen_geometry(): """ Taken from: https://stackoverflow.com/questions/3129322/how-do-i-get-monitor-resolution-in-python/56913005#56913005 @@ -1701,21 +1724,8 @@ def create_bounds(center): # write a python file with the phase information with open(filename, 'w') as f: f.write('phase_info = ') - pp = pprint.PrettyPrinter(indent=4, stream=f, sort_dicts=False) - pp.pprint(phase_info) - - # Check for 'ruff' and format the file - if shutil.which('ruff'): - subprocess.run(['ruff', filename]) - else: - if shutil.which('autopep8'): - subprocess.run(['autopep8', '--in-place', '--aggressive', filename]) - print("File formatted using 'autopep8'") - else: - print( - "'ruff' or 'autopep8' are not installed. Please consider installing one of them " - 'for better formatting.' - ) + f.write(_format_phase_info_value(phase_info, 0)) + f.write('\n') print(f'Phase info has been saved and formatted in {filename}') From 7ca510977c1a3e8bf493095e5c6904158e8227c7 Mon Sep 17 00:00:00 2001 From: Herbert Schilling Date: Mon, 6 Jul 2026 14:45:45 -0400 Subject: [PATCH 2/2] ruff fixes --- aviary/interface/graphical_input.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aviary/interface/graphical_input.py b/aviary/interface/graphical_input.py index ef4c4dce6e..c02660f3ea 100644 --- a/aviary/interface/graphical_input.py +++ b/aviary/interface/graphical_input.py @@ -30,8 +30,8 @@ def _format_phase_info_value(value, indent_level): return '{}' lines = ['{\n'] for k, v in value.items(): - lines.append(f"{inner}{k!r}: {_format_phase_info_value(v, indent_level + 1)},\n") - lines.append(f"{indent}}}") + lines.append(f'{inner}{k!r}: {_format_phase_info_value(v, indent_level + 1)},\n') + lines.append(f'{indent}}}') return ''.join(lines) if isinstance(value, (list, tuple)): @@ -42,7 +42,7 @@ def _format_phase_info_value(value, indent_level): one_line = open_b + ', '.join(items) + close_b if len(one_line) <= 60: return one_line - return open_b + '\n' + ''.join(f"{inner}{item},\n" for item in items) + f"{indent}{close_b}" + return open_b + '\n' + ''.join(f'{inner}{item},\n' for item in items) + f'{indent}{close_b}' return repr(value)