glam/check_duplicates.py

29 lines
No EOL
1.2 KiB
Python

import os
import yaml
from collections import Counter
def check_duplicates(directory):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(".yaml"):
filepath = os.path.join(root, file)
try:
with open(filepath, 'r') as f:
data = yaml.safe_load(f)
if not data or 'classes' not in data:
continue
for class_name, class_def in data['classes'].items():
if 'slots' in class_def and class_def['slots']:
slots = class_def['slots']
counts = Counter(slots)
duplicates = [item for item, count in counts.items() if count > 1]
if duplicates:
print(f"File: {file}, Class: {class_name}, Duplicates: {duplicates}")
except Exception as e:
print(f"Error processing {file}: {e}")
if __name__ == "__main__":
check_duplicates("/Users/kempersc/apps/glam/schemas/20251121/linkml/modules/classes")