#!/usr/bin/env python3 """Count lines in Python files - a simple verification utility.""" import os import sys from pathlib import Path def count_python_lines(directory: str) -> dict: """Count total lines, code lines, and comment lines in Python files.""" total_lines = 0 code_lines = 0 comment_lines = 0 files_count = 0 dir_path = Path(directory) if not dir_path.exists(): return {"error": f"Directory not found: {directory}"} for py_file in dir_path.rglob("*.py"): try: with open(py_file, 'r', encoding='utf-8') as f: lines = f.readlines() files_count += 1 for line in lines: stripped = line.strip() total_lines += 1 if stripped.startswith('#'): comment_lines += 1 elif stripped: code_lines += 1 except Exception as e: pass return { "directory": str(dir_path.resolve()), "python_files": files_count, "total_lines": total_lines, "code_lines": code_lines, "comment_lines": comment_lines, "empty_lines": total_lines - code_lines - comment_lines } def main(): if len(sys.argv) < 2: print("Usage: line_counter.py ") print("Counts lines in Python files recursively") sys.exit(1) result = count_python_lines(sys.argv[1]) if "error" in result: print(f"Error: {result['error']}") sys.exit(1) print(f"Python files: {result['python_files']}") print(f"Total lines: {result['total_lines']}") print(f"Code lines: {result['code_lines']}") print(f"Comment lines: {result['comment_lines']}") print(f"Empty lines: {result['empty_lines']}") if __name__ == "__main__": main()