TranscriptWriting / check_code_formatting.py
jmisak's picture
Upload 57 files
52d0298 verified
raw
history blame
4.61 kB
#!/usr/bin/env python3
"""
Code formatting and quality checker for TranscriptorEnhanced
Checks for common formatting issues, syntax errors, and code quality problems
"""
import os
import sys
import py_compile
import ast
from pathlib import Path
def check_syntax(filepath):
"""Check if Python file has valid syntax"""
try:
with open(filepath, 'r', encoding='utf-8') as f:
code = f.read()
ast.parse(code)
return True, "βœ“ Valid syntax"
except SyntaxError as e:
return False, f"βœ— Syntax error at line {e.lineno}: {e.msg}"
except Exception as e:
return False, f"βœ— Error: {str(e)}"
def check_indentation(filepath):
"""Check for mixed tabs/spaces and indentation issues"""
issues = []
try:
with open(filepath, 'r', encoding='utf-8') as f:
lines = f.readlines()
has_tabs = False
has_spaces = False
for i, line in enumerate(lines, 1):
if line.startswith('\t'):
has_tabs = True
if line.startswith(' '):
has_spaces = True
# Check for trailing whitespace
if line.rstrip() != line.rstrip('\n').rstrip('\r'):
issues.append(f"Line {i}: Trailing whitespace")
if has_tabs and has_spaces:
issues.append("Mixed tabs and spaces detected")
return len(issues) == 0, issues if issues else ["βœ“ Clean indentation"]
except Exception as e:
return False, [f"βœ— Error checking indentation: {str(e)}"]
def check_line_length(filepath, max_length=120):
"""Check for overly long lines"""
long_lines = []
try:
with open(filepath, 'r', encoding='utf-8') as f:
lines = f.readlines()
for i, line in enumerate(lines, 1):
if len(line.rstrip()) > max_length:
long_lines.append(f"Line {i}: {len(line.rstrip())} chars")
if long_lines:
return False, long_lines[:5] # Show first 5 only
return True, ["βœ“ All lines within limit"]
except Exception as e:
return False, [f"βœ— Error: {str(e)}"]
def check_file(filepath):
"""Run all checks on a Python file"""
print(f"\n{'='*80}")
print(f"Checking: {filepath}")
print('='*80)
all_passed = True
# Syntax check
print("\n1. SYNTAX CHECK:")
passed, result = check_syntax(filepath)
print(f" {result}")
all_passed = all_passed and passed
# Indentation check
print("\n2. INDENTATION CHECK:")
passed, results = check_indentation(filepath)
for r in results[:5]: # Show first 5 issues
print(f" {r}")
if len(results) > 5:
print(f" ... and {len(results) - 5} more issues")
all_passed = all_passed and passed
# Line length check
print("\n3. LINE LENGTH CHECK (max 120 chars):")
passed, results = check_line_length(filepath)
for r in results:
print(f" {r}")
all_passed = all_passed and passed
return all_passed
def main():
"""Check all Python files in the project"""
base_dir = Path('/home/john/TranscriptorEnhanced')
# Core Python files to check
core_files = [
'app.py',
'llm.py',
'quote_extractor.py',
'story_writer.py',
'production_logger.py',
'narrative_report_generator.py',
'reporting.py',
'validation.py',
'report_parser.py',
'table_builder.py'
]
print("="*80)
print("TRANSCRIPTORAI - CODE FORMATTING CHECK")
print("="*80)
all_passed = True
checked = 0
failed = []
for filename in core_files:
filepath = base_dir / filename
if filepath.exists():
checked += 1
passed = check_file(str(filepath))
if not passed:
failed.append(filename)
all_passed = False
else:
print(f"\n⚠️ File not found: {filename}")
# Summary
print("\n" + "="*80)
print("SUMMARY")
print("="*80)
print(f"Files checked: {checked}")
print(f"Files passed: {checked - len(failed)}")
print(f"Files failed: {len(failed)}")
if failed:
print("\n❌ Files with issues:")
for f in failed:
print(f" - {f}")
else:
print("\nβœ… All files passed formatting checks!")
print("="*80)
return 0 if all_passed else 1
if __name__ == "__main__":
sys.exit(main())