@@ -498,6 +498,7 @@ def _extract_auth_patterns(self, files: List[Path], repo_path: Path, framework:
498498 logger .debug (f"Error reading { file_path } : { e } " )
499499
500500 pattern .middleware_used = list (set (pattern .middleware_used ))
501+ pattern .auth_decorators = list (set (pattern .auth_decorators ))
501502 pattern .ownership_checks = list (set (pattern .ownership_checks ))
502503 return pattern
503504
@@ -646,27 +647,32 @@ def _extract_logging_patterns(self, files: List[Path]) -> LoggingPattern:
646647 if file_path .suffix != '.py' :
647648 continue
648649
649- try :
650- content = file_path .read_text (encoding = 'utf-8' , errors = 'ignore' )
651-
652- # Detect logger import
653- if 'from services.observability import logger' in content :
654- pattern .logger_import = 'from services.observability import logger'
655- pattern .structured_logging = True
656- elif 'import logging' in content :
657- pattern .logger_import = 'import logging'
658-
659- # Detect log levels
660- for level in ['debug' , 'info' , 'warning' , 'error' , 'critical' ]:
661- if f'logger.{ level } ' in content :
662- log_levels .add (level )
663-
664- # Detect metrics
665- if 'metrics.increment' in content or 'metrics.gauge' in content :
666- pattern .metrics_tracking = True
667-
668- except Exception as e :
669- logger .debug (f"Error reading { file_path } : { e } " )
650+ content = self ._safe_read_file (file_path )
651+ if not content :
652+ continue
653+
654+ # Detect logger import/setup
655+ if 'from services.observability import logger' in content :
656+ pattern .logger_import = 'from services.observability import logger'
657+ pattern .structured_logging = True
658+ elif 'logging.getLogger' in content :
659+ pattern .logger_import = 'logging.getLogger(__name__)'
660+ elif 'import logging' in content and not pattern .logger_import :
661+ pattern .logger_import = 'import logging'
662+
663+ # Detect log levels (both logger.X and logging.X)
664+ for level in ['debug' , 'info' , 'warning' , 'error' , 'critical' ]:
665+ if f'logger.{ level } ' in content or f'logging.{ level } ' in content or f'.{ level } (' in content :
666+ log_levels .add (level )
667+
668+ # Detect metrics
669+ if 'metrics.increment' in content or 'metrics.gauge' in content :
670+ pattern .metrics_tracking = True
671+
672+ # Detect structlog
673+ if 'structlog' in content :
674+ pattern .structured_logging = True
675+ pattern .logger_import = 'structlog'
670676
671677 pattern .log_levels_used = list (log_levels )
672678 return pattern
0 commit comments