Coverage report: 74%

Files Functions Classes

coverage.py v7.16.1, created at 2026-09-19 20:43 +0530

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
python/pyairflowtester/__init__.py (no function)   100% 25 0 0   100% 0 0   100%
python/pyairflowtester/analyzer.py AnalyzerNotImplementedError.__init__   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.__init__   0% 3 3 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.connect   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.analyze_dag_failures   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.analyze_task_failures   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.detect_hotspots   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.analyze_cascade_failures   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.get_dbt_test_failures   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.detect_flaky_tests   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py Analyzer.calculate_blast_radius   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/analyzer.py (no function)   100% 15 0 0   100% 0 0   100%
python/pyairflowtester/cli.py main   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/cli.py scan   0% 30 30 0   0% 10 0   0%
python/pyairflowtester/cli.py score   0% 20 20 0   0% 2 0   0%
python/pyairflowtester/cli.py rules   0% 19 19 0   0% 8 0   0%
python/pyairflowtester/cli.py connect   0% 7 7 0   100% 0 0   0%
python/pyairflowtester/cli.py serve   0% 14 14 0   100% 0 0   0%
python/pyairflowtester/cli.py _display_violations   0% 14 14 0   0% 6 0   0%
python/pyairflowtester/cli.py (no function)   0% 46 46 2   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/__init__.py (no function)   100% 9 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py OwnershipAnalyzer.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py OwnershipAnalyzer.analyze_owner   100% 25 0 0   100% 18 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py OwnershipAnalyzer._calculate_team_risk   65% 17 6 0   50% 14 7   58%
python/pyairflowtester/dependency_intelligence/analytics.py OwnershipAnalyzer.analyze_all_owners   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py OwnershipAnalyzer.find_critical_ownership_gaps   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SchemaEvolutionTracker.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SchemaEvolutionTracker.add_schema_change   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SchemaEvolutionTracker.detect_breaking_changes   86% 14 2 0   60% 10 2   75%
python/pyairflowtester/dependency_intelligence/analytics.py SchemaEvolutionTracker.get_evolution_timeline   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.set_sla   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.record_performance   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.validate_node   85% 13 2 0   67% 6 2   79%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator._is_compliant   67% 6 2 0   100% 0 0   67%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.validate_all   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.get_sla_violations   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py SLAValidator.get_missing_slas   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py TestCoverageAnalyzer.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py TestCoverageAnalyzer.assign_tests   100% 4 0 0   75% 4 1   88%
python/pyairflowtester/dependency_intelligence/analytics.py TestCoverageAnalyzer.analyze_coverage   100% 20 0 0   100% 12 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py TestCoverageAnalyzer.analyze_all   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py TestCoverageAnalyzer.get_poorly_tested_nodes   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analytics.py TestCoverageAnalyzer.get_critical_test_gaps   78% 9 2 0   50% 8 2   65%
python/pyairflowtester/dependency_intelligence/analytics.py (no function)   100% 68 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py ImpactAnalysisEngine.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py ImpactAnalysisEngine.analyze   100% 8 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py ImpactAnalysisEngine._calculate_impact_score   75% 4 1 0   50% 2 1   67%
python/pyairflowtester/dependency_intelligence/analyzers.py ImpactAnalysisEngine._group_by_severity   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py ImpactAnalysisEngine._group_by_type   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py ImpactAnalysisEngine._calculate_max_depth   88% 8 1 0   67% 6 2   79%
python/pyairflowtester/dependency_intelligence/analyzers.py BlastRadiusEngine.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py BlastRadiusEngine.analyze   100% 8 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py BlastRadiusEngine._calculate_severity_distribution   100% 6 0 0   75% 4 1   90%
python/pyairflowtester/dependency_intelligence/analyzers.py BlastRadiusEngine._assess_risk_level   57% 7 3 0   50% 6 3   54%
python/pyairflowtester/dependency_intelligence/analyzers.py BlastRadiusEngine._is_deployable   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py BlastRadiusEngine._calculate_blast_depth   100% 9 0 0   88% 8 1   94%
python/pyairflowtester/dependency_intelligence/analyzers.py RiskScoringEngine.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py RiskScoringEngine.score_node   88% 34 4 0   67% 12 4   83%
python/pyairflowtester/dependency_intelligence/analyzers.py RiskScoringEngine._score_to_severity   57% 7 3 0   50% 6 3   54%
python/pyairflowtester/dependency_intelligence/analyzers.py RiskScoringEngine.score_all_nodes   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py DriftDetectionEngine.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/analyzers.py DriftDetectionEngine.detect_drift   97% 38 1 0   94% 18 1   96%
python/pyairflowtester/dependency_intelligence/analyzers.py (no function)   100% 28 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py CacheStats.hit_rate   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py InMemoryCache.__init__   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py InMemoryCache.get   100% 13 0 0   100% 4 0   100%
python/pyairflowtester/dependency_intelligence/cache.py InMemoryCache.set   100% 7 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/cache.py InMemoryCache.delete   0% 2 2 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/cache.py InMemoryCache.delete_prefix   100% 5 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/cache.py InMemoryCache.clear   0% 2 2 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.__init__   100% 9 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.get   100% 13 0 0   100% 4 0   100%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.set   100% 5 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.delete   0% 3 3 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.delete_prefix   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.clear   0% 3 3 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/cache.py SqliteCache.close   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.get   100% 9 0 0   100% 6 0   100%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.set   100% 3 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.invalidate   0% 3 3 0   0% 2 0   0%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.invalidate_prefix   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.register_invalidation_rule   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cache.py TieredCache.emit   100% 6 0 0   100% 4 0   100%
python/pyairflowtester/dependency_intelligence/cache.py (no function)   100% 39 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/cli.py dependency_cli   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/cli.py build   0% 12 12 0   0% 4 0   0%
python/pyairflowtester/dependency_intelligence/cli.py impact   0% 15 15 0   0% 8 0   0%
python/pyairflowtester/dependency_intelligence/cli.py lineage   0% 24 24 0   0% 12 0   0%
python/pyairflowtester/dependency_intelligence/cli.py blast_radius   0% 12 12 0   0% 6 0   0%
python/pyairflowtester/dependency_intelligence/cli.py detect_cycles   0% 19 19 0   0% 8 0   0%
python/pyairflowtester/dependency_intelligence/cli.py detect_orphans   0% 13 13 0   0% 8 0   0%
python/pyairflowtester/dependency_intelligence/cli.py risk_score   0% 18 18 0   0% 6 0   0%
python/pyairflowtester/dependency_intelligence/cli.py register_dependency_cli   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/cli.py (no function)   0% 52 52 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine._graph_content_hash   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.invalidate_cache   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_upstream_nodes   100% 20 0 0   93% 14 1   97%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_downstream_nodes   100% 20 0 0   93% 14 1   97%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_reach   92% 12 1 0   75% 8 2   85%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_path   94% 16 1 0   83% 12 2   89%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.detect_cycles   100% 21 0 0   100% 12 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.detect_cycles.dfs   100% 13 0 0   83% 6 1   95%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.has_cycle   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.detect_orphans   100% 10 0 0   100% 6 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.detect_disconnected_components   100% 9 0 0   100% 4 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.detect_disconnected_components.dfs   86% 7 1 0   83% 6 1   85%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_critical_path   89% 9 1 0   75% 4 1   85%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_critical_path.dfs   100% 9 0 0   83% 6 1   93%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_strongly_connected_components   100% 19 0 0   80% 10 2   93%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_strongly_connected_components.strongconnect   100% 21 0 0   90% 10 1   97%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_node_centrality   90% 10 1 0   75% 4 1   86%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.filter_by_type   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.filter_by_owner   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py DependencyGraphEngine.get_stats   100% 5 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/graph.py (no function)   100% 25 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py FailurePredictionEngine.__init__   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py FailurePredictionEngine.record_failure   100% 3 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py FailurePredictionEngine.predict_node_failure   86% 37 5 0   75% 16 4   83%
python/pyairflowtester/dependency_intelligence/intelligence.py FailurePredictionEngine.predict_all_nodes   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py FailurePredictionEngine.get_high_risk_nodes   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py AnomalyDetector.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py AnomalyDetector.detect_all_anomalies   73% 22 6 0   50% 18 3   62%
python/pyairflowtester/dependency_intelligence/intelligence.py RecommendationEngine.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py RecommendationEngine.generate_recommendations   83% 23 4 0   57% 14 4   73%
python/pyairflowtester/dependency_intelligence/intelligence.py RecommendationEngine.get_top_recommendations   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator.calculate_health_score   100% 8 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator._calculate_coverage_score   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator._calculate_connectivity_score   38% 8 5 0   17% 6 1   29%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator._calculate_ownership_score   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator._calculate_test_score   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator._calculate_sla_score   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator._count_issues   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/intelligence.py HealthScoreCalculator.get_health_summary   54% 13 6 0   50% 6 3   53%
python/pyairflowtester/dependency_intelligence/intelligence.py (no function)   100% 63 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/models.py Node.__hash__   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/models.py Node.__eq__   0% 3 3 0   0% 2 0   0%
python/pyairflowtester/dependency_intelligence/models.py Edge.__hash__   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/models.py Edge.__eq__   0% 3 3 0   0% 2 0   0%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.add_node   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.add_edge   100% 8 0 0   50% 4 2   83%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.get_node   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.get_edges_from   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.get_edges_to   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.get_node_count_by_type   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.get_critical_nodes   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/models.py DependencyGraph.stats   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/models.py (no function)   100% 108 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py MetricsCollector.__init__   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py MetricsCollector.record_metric   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py MetricsCollector.get_metrics_for_node   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py MetricsCollector.calculate_statistics   100% 6 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/observability.py MetricsCollector.cleanup_old_metrics   0% 4 4 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/observability.py AlertManager.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py AlertManager.set_threshold   100% 3 0 0   50% 2 1   80%
python/pyairflowtester/dependency_intelligence/observability.py AlertManager.check_threshold   81% 16 3 0   75% 12 3   79%
python/pyairflowtester/dependency_intelligence/observability.py AlertManager.get_active_alerts   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py AlertManager.resolve_alert   100% 4 0 0   50% 4 2   75%
python/pyairflowtester/dependency_intelligence/observability.py AlertManager.get_alerts_for_node   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.log_execution   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.get_events_for_node   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.get_failure_rate   100% 5 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.get_average_duration   86% 7 1 0   75% 4 1   82%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.cleanup_old_events   0% 4 4 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/observability.py EventLogger.export_events   0% 10 10 0   0% 4 0   0%
python/pyairflowtester/dependency_intelligence/observability.py DashboardBuilder.__init__   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py DashboardBuilder.build_node_dashboard   90% 10 1 0   50% 2 1   83%
python/pyairflowtester/dependency_intelligence/observability.py DashboardBuilder.build_health_dashboard   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/observability.py DashboardBuilder._get_top_failing_nodes   100% 7 0 0   100% 4 0   100%
python/pyairflowtester/dependency_intelligence/observability.py DashboardBuilder._get_slowest_nodes   100% 7 0 0   100% 4 0   100%
python/pyairflowtester/dependency_intelligence/observability.py (no function)   100% 69 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDAGParser.parse_dag_file   57% 7 3 0   100% 0 0   57%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDAGParser.parse_dag_code   75% 12 3 0   100% 0 0   75%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDAGParser.parse_dag_code.DAGVisitor.visit_Call   85% 26 4 0   77% 30 7   80%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDAGParser.build_graph   52% 21 10 0   50% 12 4   52%
python/pyairflowtester/dependency_intelligence/parsers.py dbtManifestParser.parse_manifest   86% 37 5 0   71% 24 3   80%
python/pyairflowtester/dependency_intelligence/parsers.py dbtManifestParser.parse_model_node   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDatasetParser.parse_dataset_connections   100% 10 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDatasetParser.parse_dataset_connections.DatasetVisitor.visit_Call   67% 9 3 0   67% 12 2   67%
python/pyairflowtester/dependency_intelligence/parsers.py AirflowDatasetParser.build_dataset_graph   0% 12 12 0   0% 4 0   0%
python/pyairflowtester/dependency_intelligence/parsers.py UnifiedGraphBuilder.build_unified_graph   79% 14 3 0   83% 6 1   80%
python/pyairflowtester/dependency_intelligence/parsers.py (no function)   100% 27 0 0   100% 0 0   100%
python/pyairflowtester/dependency_intelligence/runtime_import.py parse_dag_via_runtime_import   77% 22 5 0   75% 4 1   77%
python/pyairflowtester/dependency_intelligence/runtime_import.py parse_dag_file_with_fallback   100% 5 0 0   100% 2 0   100%
python/pyairflowtester/dependency_intelligence/runtime_import.py (no function)   100% 11 0 0   100% 0 0   100%
python/pyairflowtester/models.py RuleViolation.to_dict   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/models.py RiskScorecard.to_dict   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/models.py (no function)   100% 75 0 0   100% 0 0   100%
python/pyairflowtester/report.py ReportGenerator.generate   0% 12 12 0   0% 8 0   0%
python/pyairflowtester/report.py ReportGenerator.generate_json   0% 5 5 0   100% 0 0   0%
python/pyairflowtester/report.py ReportGenerator.generate_html   0% 9 9 0   0% 2 0   0%
python/pyairflowtester/report.py ReportGenerator.generate_markdown   0% 11 11 0   0% 2 0   0%
python/pyairflowtester/report.py ReportGenerator.generate_sarif   0% 5 5 0   100% 0 0   0%
python/pyairflowtester/report.py ReportGenerator._severity_to_level   0% 2 2 0   100% 0 0   0%
python/pyairflowtester/report.py (no function)   100% 14 0 0   100% 0 0   100%
python/pyairflowtester/rules/__init__.py get_all_rules   0% 1 1 0   100% 0 0   0%
python/pyairflowtester/rules/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py BaseRule.__init__   100% 5 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py BaseRule.evaluate   100% 0 0 1   100% 0 0   100%
python/pyairflowtester/rules/config.py ExecutorConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py ExecutorConfigurationRule.evaluate   75% 8 2 0   33% 6 2   57%
python/pyairflowtester/rules/config.py AirflowCfgPoolConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py AirflowCfgPoolConfigurationRule.evaluate   83% 6 1 0   50% 2 1   75%
python/pyairflowtester/rules/config.py ConcurrencyConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py ConcurrencyConfigurationRule.evaluate   83% 6 1 0   50% 2 1   75%
python/pyairflowtester/rules/config.py QueueConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py QueueConfigurationRule.evaluate   75% 4 1 0   50% 2 1   67%
python/pyairflowtester/rules/config.py MaxActiveRunsRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py MaxActiveRunsRule.evaluate   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/rules/config.py XComConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py XComConfigurationRule.evaluate   100% 5 0 0   50% 2 1   86%
python/pyairflowtester/rules/config.py LogRetentionRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py LogRetentionRule.evaluate   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/rules/config.py EncryptionConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py EncryptionConfigurationRule.evaluate   100% 5 0 0   50% 2 1   86%
python/pyairflowtester/rules/config.py TLSConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py TLSConfigurationRule.evaluate   100% 5 0 0   100% 2 0   100%
python/pyairflowtester/rules/config.py RBACConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py RBACConfigurationRule.evaluate   100% 5 0 0   100% 2 0   100%
python/pyairflowtester/rules/config.py SchedulerConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py SchedulerConfigurationRule.evaluate   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/rules/config.py WorkerConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py WorkerConfigurationRule.evaluate   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/rules/config.py LogStorageRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py LogStorageRule.evaluate   100% 5 0 0   50% 2 1   86%
python/pyairflowtester/rules/config.py DatabaseBackupRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py DatabaseBackupRule.evaluate   100% 4 0 0   50% 2 1   83%
python/pyairflowtester/rules/config.py DAGFolderConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/config.py DAGFolderConfigurationRule.evaluate   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/rules/config.py (no function)   100% 49 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag.py BaseRule.__init__   100% 5 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag.py BaseRule.evaluate   100% 0 0 1   100% 0 0   100%
python/pyairflowtester/rules/dag.py CircularDependencyRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag.py CircularDependencyRule._extract_edges   83% 12 2 0   88% 8 1   85%
python/pyairflowtester/rules/dag.py CircularDependencyRule._has_cycle   100% 8 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag.py CircularDependencyRule._has_cycle.dfs   100% 8 0 0   100% 6 0   100%
python/pyairflowtester/rules/dag.py CircularDependencyRule.evaluate   100% 5 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag.py MissingSLARule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag.py MissingSLARule.evaluate   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag.py ExpensiveImportsRule.__init__   100% 7 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag.py ExpensiveImportsRule.evaluate   100% 6 0 0   100% 4 0   100%
python/pyairflowtester/rules/dag.py ParseTimeRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag.py ParseTimeRule.evaluate   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag.py (no function)   100% 24 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py BaseRule.__init__   100% 5 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py BaseRule.evaluate   100% 0 0 1   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py TaskCountRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py TaskCountRule.evaluate   100% 6 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag_advanced.py CatchupConfigRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py CatchupConfigRule.evaluate   100% 5 0 0   100% 4 0   100%
python/pyairflowtester/rules/dag_advanced.py SourceCodePoolConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py SourceCodePoolConfigurationRule.evaluate   100% 6 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag_advanced.py HardcodedConnectionRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py HardcodedConnectionRule.evaluate   100% 7 0 0   100% 4 0   100%
python/pyairflowtester/rules/dag_advanced.py SecretsInCodeRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py SecretsInCodeRule.evaluate   100% 7 0 0   100% 4 0   100%
python/pyairflowtester/rules/dag_advanced.py RetryConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py RetryConfigurationRule.evaluate   100% 8 0 0   83% 6 1   93%
python/pyairflowtester/rules/dag_advanced.py SensorTimeoutRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py SensorTimeoutRule.evaluate   100% 8 0 0   100% 6 0   100%
python/pyairflowtester/rules/dag_advanced.py BranchComplexityRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py BranchComplexityRule.evaluate   33% 9 6 0   17% 6 1   27%
python/pyairflowtester/rules/dag_advanced.py DocumentationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py DocumentationRule.evaluate   100% 4 0 0   100% 2 0   100%
python/pyairflowtester/rules/dag_advanced.py AlertingConfigurationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py AlertingConfigurationRule.evaluate   100% 5 0 0   100% 4 0   100%
python/pyairflowtester/rules/dag_advanced.py OperatorDeprecationRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dag_advanced.py OperatorDeprecationRule.evaluate   100% 7 0 0   100% 4 0   100%
python/pyairflowtester/rules/dag_advanced.py (no function)   100% 38 0 0   100% 0 0   100%
python/pyairflowtester/rules/dbt.py BaseRule.__init__   100% 5 0 0   100% 0 0   100%
python/pyairflowtester/rules/dbt.py BaseRule.evaluate   100% 0 0 1   100% 0 0   100%
python/pyairflowtester/rules/dbt.py MissingTestsRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dbt.py MissingTestsRule.evaluate   0% 25 25 0   0% 26 0   0%
python/pyairflowtester/rules/dbt.py RedundantTestsRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dbt.py RedundantTestsRule.evaluate   0% 17 17 0   0% 14 0   0%
python/pyairflowtester/rules/dbt.py UntestedModelRule.__init__   100% 6 0 0   100% 0 0   100%
python/pyairflowtester/rules/dbt.py UntestedModelRule.evaluate   0% 24 24 0   0% 20 0   0%
python/pyairflowtester/rules/dbt.py (no function)   100% 13 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py Scanner.__init__   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py Scanner.scan_dags   79% 19 4 0   83% 6 1   80%
python/pyairflowtester/scanner.py Scanner.scan_config   67% 15 5 0   100% 2 0   71%
python/pyairflowtester/scanner.py Scanner._parse_airflow_cfg   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py Scanner._coerce_config_value   83% 6 1 0   75% 4 1   80%
python/pyairflowtester/scanner.py Scanner.scan_dbt   0% 21 21 0   0% 4 0   0%
python/pyairflowtester/scanner.py Scanner._get_dag_rules   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py Scanner._get_dbt_rules   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py Scanner._get_config_rules   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py Scanner._get_scorer   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/scanner.py (no function)   100% 17 0 0   100% 0 0   100%
python/pyairflowtester/scoring.py Scorer.__init__   100% 1 0 0   100% 0 0   100%
python/pyairflowtester/scoring.py Scorer.calculate_risk_score   100% 8 0 0   100% 2 0   100%
python/pyairflowtester/scoring.py Scorer.aggregate_by_severity   100% 6 0 0   75% 4 1   90%
python/pyairflowtester/scoring.py Scorer.categorize_risk   100% 7 0 0   100% 6 0   100%
python/pyairflowtester/scoring.py Scorer.calculate_health_score   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/scoring.py Scorer.calculate_trend   100% 6 0 0   100% 4 0   100%
python/pyairflowtester/scoring.py Scorer.filter_by_severity   100% 2 0 0   100% 0 0   100%
python/pyairflowtester/scoring.py (no function)   100% 10 0 0   100% 0 0   100%
python/pyairflowtester/web/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
python/pyairflowtester/web/app.py _render_value   86% 22 3 0   89% 18 2   88%
python/pyairflowtester/web/app.py create_app   100% 14 0 0   100% 0 0   100%
python/pyairflowtester/web/app.py create_app.list_nodes   100% 3 0 0   100% 0 0   100%
python/pyairflowtester/web/app.py create_app.node_dashboard   100% 6 0 0   100% 2 0   100%
python/pyairflowtester/web/app.py create_app.health_dashboard   100% 4 0 0   100% 0 0   100%
python/pyairflowtester/web/app.py build_app_from_sources   80% 5 1 0   50% 2 1   71%
python/pyairflowtester/web/app.py (no function)   100% 18 0 2   100% 0 0   100%
Total     77% 2840 651 8   61% 802 111   74%

No items found using the specified filter.