29 lines
No EOL
1.2 KiB
Python
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") |