import os
import re
from pathlib import Path
def remove_default_from_problematic_structs(models_dir):
problematic_structs = [
'FineTuneReinforcementMethod',
'GraderMulti',
'RealtimeBetaServerEventConversationItemInputAudioTranscriptionCompleted',
'RealtimeServerEventConversationItemInputAudioTranscriptionCompleted',
'RunObject',
'ValidateGraderRequest',
'RunStreamEventAnyOf',
'RunStreamEventAnyOf1',
'RunStreamEventAnyOf2',
'RunStreamEventAnyOf3',
'RunStreamEventAnyOf4',
'RunStreamEventAnyOf5',
'RunStreamEventAnyOf6',
'RunStreamEventAnyOf7',
'RunStreamEventAnyOf8',
'RunStreamEventAnyOf9',
]
for struct_name in problematic_structs:
file_name = re.sub(r'(?<!^)(?=[A-Z])', '_', struct_name).lower() + '.rs'
file_path = models_dir / file_name
if not file_path.exists():
print(f"Warning: File {file_path} not found")
continue
with open(file_path, 'r') as f:
content = f.read()
original_content = content
pattern = r'(#\[derive\([^)]*?)(\s*,\s*Default|Default\s*,\s*)([^)]*?\)\])'
content = re.sub(pattern, r'\1\3', content)
content = re.sub(r'#\[derive\(Default\)\]', '', content)
if content != original_content:
with open(file_path, 'w') as f:
f.write(content)
print(f"Removed Default derive from {struct_name}")
def main():
if len(os.sys.argv) < 2:
print("Usage: fix_default_derives.py <root_dir>")
os.sys.exit(1)
root_dir = Path(os.sys.argv[1])
models_dir = root_dir / 'src' / 'models'
if not models_dir.exists():
print(f"Models directory not found: {models_dir}")
os.sys.exit(1)
print("Removing Default derives from problematic structs...")
remove_default_from_problematic_structs(models_dir)
print("Done!")
if __name__ == '__main__':
main()