Coverage report: 42%

Files Functions Classes

coverage.py v7.13.5, created at 2026-05-08 08:37 +1200

File class   statements missing excluded   coverage
apps / __init__.py (no class)   0 0 0   100%
apps / backend / __init__.py (no class)   0 0 0   100%
apps / backend / api / __init__.py (no class)   0 0 0   100%
apps / backend / api / main.py HealthResponse   0 0 0   100%
apps / backend / api / main.py RatingResponse   0 0 0   100%
apps / backend / api / main.py RatingHistoryItem   0 0 0   100%
apps / backend / api / main.py HorseDetailResponse   0 0 0   100%
apps / backend / api / main.py DriverDetailResponse   0 0 0   100%
apps / backend / api / main.py TrainerDetailResponse   0 0 0   100%
apps / backend / api / main.py PaginationMeta   0 0 0   100%
apps / backend / api / main.py PaginatedRatingResponse   0 0 0   100%
apps / backend / api / main.py PaginatedRaceResponse   0 0 0   100%
apps / backend / api / main.py IngestionRequest   0 0 0   100%
apps / backend / api / main.py IngestionResponse   0 0 0   100%
apps / backend / api / main.py RecomputeRequest   0 0 0   100%
apps / backend / api / main.py RecomputeResponse   0 0 0   100%
apps / backend / api / main.py ScrapeRequest   0 0 0   100%
apps / backend / api / main.py ScrapeResponse   0 0 0   100%
apps / backend / api / main.py SchedulerJobInfo   0 0 0   100%
apps / backend / api / main.py SchedulerJobListResponse   0 0 0   100%
apps / backend / api / main.py AddSchedulerJobRequest   0 0 0   100%
apps / backend / api / main.py AddSchedulerJobResponse   0 0 0   100%
apps / backend / api / main.py RemoveSchedulerJobResponse   0 0 0   100%
apps / backend / api / main.py PredictionResponse   0 0 0   100%
apps / backend / api / main.py RacePredictionResponse   0 0 0   100%
apps / backend / api / main.py ConfidenceBucket   0 0 0   100%
apps / backend / api / main.py ConfidenceBuckets   0 0 0   100%
apps / backend / api / main.py DailyTrendItem   0 0 0   100%
apps / backend / api / main.py RecentRaceAccuracy   0 0 0   100%
apps / backend / api / main.py AccuracySummary   0 0 0   100%
apps / backend / api / main.py AuditLogCreateRequest   0 0 0   100%
apps / backend / api / main.py AuditLogEntry   0 0 0   100%
apps / backend / api / main.py AuditLogListResponse   0 0 0   100%
apps / backend / api / main.py (no class)   1081 565 3   48%
apps / backend / api / websocket.py WSMessage   0 0 0   100%
apps / backend / api / websocket.py OddsUpdateMessage   0 0 0   100%
apps / backend / api / websocket.py ResultUpdateMessage   0 0 0   100%
apps / backend / api / websocket.py InitialStateMessage   0 0 0   100%
apps / backend / api / websocket.py ConnectionManager   44 2 0   95%
apps / backend / api / websocket.py (no class)   78 24 0   69%
apps / backend / worker / __init__.py (no class)   0 0 0   100%
apps / backend / worker / cli.py (no class)   508 360 2   29%
packages / __init__.py (no class)   0 0 0   100%
packages / betting / __init__.py (no class)   0 0 0   100%
packages / betting / odds_client.py OddsComparisonClient   7 7 2   0%
packages / betting / odds_client.py (no class)   9 9 0   0%
packages / betting / value_bets.py ValueBetFinder   16 16 1   0%
packages / betting / value_bets.py (no class)   9 9 0   0%
packages / core / __init__.py (no class)   0 0 0   100%
packages / core / common / __init__.py (no class)   0 0 0   100%
packages / core / common / cache.py (no class)   104 81 0   22%
packages / core / common / data_quality.py ValidationIssue   0 0 0   100%
packages / core / common / data_quality.py DataQualityReport   3 3 0   0%
packages / core / common / data_quality.py DataQualityValidator   79 34 0   57%
packages / core / common / data_quality.py (no class)   48 7 0   85%
packages / core / common / logging.py CustomJsonFormatter   3 0 0   100%
packages / core / common / logging.py (no class)   43 18 0   58%
packages / core / common / rate_limit.py (no class)   10 3 0   70%
packages / core / common / scheduler.py TipSharksScheduler   85 18 0   79%
packages / core / common / scheduler.py (no class)   198 125 0   37%
packages / core / common / settings.py TABSettings   0 0 0   100%
packages / core / common / settings.py DatabaseSettings   0 0 0   100%
packages / core / common / settings.py LoggingSettings   0 0 0   100%
packages / core / common / settings.py APISettings   0 0 0   100%
packages / core / common / settings.py HRNZSettings   0 0 0   100%
packages / core / common / settings.py RatingSettings   11 1 0   91%
packages / core / common / settings.py RateLimitSettings   0 0 0   100%
packages / core / common / settings.py RedisSettings   0 0 0   100%
packages / core / common / settings.py IngestServiceSettings   0 0 0   100%
packages / core / common / settings.py SchedulerSettings   0 0 0   100%
packages / core / common / settings.py Settings   0 0 0   100%
packages / core / common / settings.py (no class)   153 0 0   100%
packages / core / common / utils.py (no class)   32 13 0   59%
packages / core / ratings / __init__.py (no class)   0 0 0   100%
packages / core / ratings / engine.py RatingState   0 0 0   100%
packages / core / ratings / engine.py RatingUpdate   0 0 0   100%
packages / core / ratings / engine.py RatingEngine   221 16 0   93%
packages / core / ratings / engine.py (no class)   41 0 0   100%
packages / core / ratings / form_cycle.py FormCycleDetector   9 9 3   0%
packages / core / ratings / form_cycle.py (no class)   10 10 0   0%
packages / core / ratings / predictions.py PredictionResult   0 0 0   100%
packages / core / ratings / predictions.py RacePrediction   0 0 0   100%
packages / core / ratings / predictions.py PredictionEngine   148 81 0   45%
packages / core / ratings / predictions.py (no class)   58 8 0   86%
packages / core / ratings / recompute.py (no class)   68 58 0   15%
packages / core / ratings / time_weighted_elo.py TimeWeightedElo   19 19 0   0%
packages / core / ratings / time_weighted_elo.py (no class)   19 19 2   0%
packages / core / ratings / track_conditions.py TrackConditionCategory   0 0 0   100%
packages / core / ratings / track_conditions.py TrackConditionModel   28 28 0   0%
packages / core / ratings / track_conditions.py (no class)   40 40 2   0%
packages / core / storage / __init__.py (no class)   0 0 0   100%
packages / core / storage / audit.py AuditLogger   23 23 0   0%
packages / core / storage / audit.py (no class)   14 0 0   100%
packages / core / storage / database.py (no class)   88 47 0   47%
packages / core / storage / ingestion.py IngestionService   120 120 0   0%
packages / core / storage / ingestion.py (no class)   19 2 0   89%
packages / core / storage / models.py EntityType   0 0 0   100%
packages / core / storage / models.py Meeting   0 0 1   100%
packages / core / storage / models.py Race   0 0 4   100%
packages / core / storage / models.py Horse   0 0 1   100%
packages / core / storage / models.py Driver   0 0 1   100%
packages / core / storage / models.py Trainer   0 0 1   100%
packages / core / storage / models.py Starter   0 0 4   100%
packages / core / storage / models.py RatingSnapshot   0 0 4   100%
packages / core / storage / models.py BarrierAdjustment   0 0 4   100%
packages / core / storage / models.py HandicapAdjustment   0 0 4   100%
packages / core / storage / models.py PredictionHistory   0 0 0   100%
packages / core / storage / models.py AuditLog   0 0 0   100%
packages / core / storage / models.py (no class)   142 0 9   100%
packages / core / storage / repositories.py MeetingRepository   18 18 0   0%
packages / core / storage / repositories.py RaceRepository   52 36 0   31%
packages / core / storage / repositories.py HorseRepository   7 7 0   0%
packages / core / storage / repositories.py DriverRepository   9 9 0   0%
packages / core / storage / repositories.py TrainerRepository   9 9 0   0%
packages / core / storage / repositories.py StarterRepository   64 64 0   0%
packages / core / storage / repositories.py RatingSnapshotRepository   33 33 0   0%
packages / core / storage / repositories.py BarrierAdjustmentRepository   13 13 0   0%
packages / core / storage / repositories.py HandicapAdjustmentRepository   13 13 0   0%
packages / core / storage / repositories.py (no class)   160 86 0   46%
packages / hrnz_scraper / __init__.py (no class)   3 0 0   100%
packages / hrnz_scraper / club_refresh.py (no class)   186 186 5   0%
packages / hrnz_scraper / historical_scraper.py HRNZHistoricalResultsScraper   468 468 0   0%
packages / hrnz_scraper / historical_scraper.py (no class)   46 0 3   100%
packages / hrnz_scraper / mapper.py HRNZDataMapper   80 80 0   0%
packages / hrnz_scraper / mapper.py (no class)   14 14 0   0%
packages / hrnz_scraper / proxy.py (no class)   28 24 0   14%
packages / hrnz_scraper / scraper.py HRNZScraperError   0 0 0   100%
packages / hrnz_scraper / scraper.py HRNZScraper   231 167 0   28%
packages / hrnz_scraper / scraper.py (no class)   31 0 3   100%
packages / ingest / __init__.py (no class)   0 0 0   100%
packages / ingest / streaming.py MessageSource   0 0 0   100%
packages / ingest / streaming.py StreamingIngestionService   6 6 3   0%
packages / ingest / streaming.py (no class)   17 17 0   0%
packages / ingest_client / __init__.py (no class)   2 0 0   100%
packages / ingest_client / client.py IngestServiceClient   37 37 0   0%
packages / ingest_client / client.py (no class)   15 0 0   100%
packages / ml / __init__.py (no class)   0 0 0   100%
packages / ml / ensemble.py EnsembleModel   3 3 5   0%
packages / ml / ensemble.py (no class)   10 10 0   0%
packages / ml / features.py FeatureEngineering   1 1 4   0%
packages / ml / features.py (no class)   10 10 0   0%
packages / regions / __init__.py (no class)   0 0 0   100%
packages / regions / australia.py AustralianHarnessClient   2 2 5   0%
packages / regions / australia.py (no class)   9 9 0   0%
packages / tab_client / __init__.py (no class)   2 0 0   100%
packages / tab_client / client.py TABClientError   0 0 0   100%
packages / tab_client / client.py TABRateLimitError   0 0 0   100%
packages / tab_client / client.py TABClient   81 15 0   81%
packages / tab_client / client.py (no class)   29 6 2   79%
packages / tab_client / mock_client.py MockTABClient   68 7 0   90%
packages / tab_client / mock_client.py (no class)   17 0 0   100%
Total     5362 3125 78   42%

No items found using the specified filter.