import os def check_and_fix(path): filename = os.path.basename(path) if not filename.endswith("RecordSetTypes.yaml"): return # Filename: WomensArchivesRecordSetTypes.yaml # Custodian class: WomensArchives.yaml custodian_class = filename.replace('RecordSetTypes.yaml', '') custodian_class_s = custodian_class + "s" with open(path, 'r') as f: lines = f.readlines() new_lines = [] in_imports = False modified = False for line in lines: stripped = line.strip() if stripped == "imports:": in_imports = True new_lines.append(line) continue if in_imports: if not stripped.startswith("-"): if stripped and not stripped.startswith("#"): in_imports = False new_lines.append(line) else: import_path = stripped.lstrip("- ").strip() # Check for import of custodian class: - ./WomensArchives if import_path == f"./{custodian_class}": print(f"Removing cycle import in {path}: {stripped}") modified = True continue elif import_path == f"./{custodian_class_s}": print(f"Removing cycle import (plural) in {path}: {stripped}") modified = True continue else: new_lines.append(line) else: new_lines.append(line) if modified: with open(path, 'w') as f: f.writelines(new_lines) def process_directory(directory): for root, dirs, files in os.walk(directory): for file in files: if file.endswith(".yaml"): check_and_fix(os.path.join(root, file)) process_directory("schemas/20251121/linkml/modules/classes")