from html.parser import HTMLParser class StructureValidator(HTMLParser): def __init__(self): super().__init__() self.stack = [] self.important_divs = { 'fileTabsContent': None, 'processed': None, 'repository': None, 'repoTabsContent': None, 'pills-backup': None } def handle_starttag(self, tag, attrs): if tag == 'div': attr_dict = dict(attrs) div_id = attr_dict.get('id', '') div_class = attr_dict.get('class', '') line_no = self.getpos()[0] self.stack.append({ 'tag': 'div', 'id': div_id, 'class': div_class, 'line': line_no }) if div_id in self.important_divs: self.important_divs[div_id] = { 'line': line_no, 'class': div_class, 'depth': len(self.stack) } def handle_endtag(self, tag): if tag == 'div' and self.stack: self.stack.pop() def validate(self, html_content): self.feed(html_content) print("=== IMPORTANT DIV INFORMATION ===\n") for div_id, info in self.important_divs.items(): if info: print(f"{div_id}:") print(f" Line: {info['line']}") print(f" Class: {info['class']}") print(f" Depth: {info['depth']}") print() # Check if processed and repository are siblings if self.important_divs['processed'] and self.important_divs['repository']: proc_depth = self.important_divs['processed']['depth'] repo_depth = self.important_divs['repository']['depth'] print("=== RELATIONSHIP CHECK ===") print(f"#processed depth: {proc_depth}") print(f"#repository depth: {repo_depth}") if proc_depth == repo_depth: print("✓ They are SIBLINGS (same depth) - CORRECT") else: print("✗ They are NOT siblings (different depth) - PROBLEM!") print(f" Depth difference: {abs(proc_depth - repo_depth)}") # Read the file file_path = r"d:\Code\iDRAC_Info\idrac_info\backend\templates\index.html" with open(file_path, "r", encoding="utf-8") as f: content = f.read() validator = StructureValidator() validator.validate(content)