Coverage report: 56%

Files Functions Classes

coverage.py v7.15.2, created at 2026-08-04 22:15 +0000

File class   statements missing excluded   coverage
src/secchi/__init__.py (no class)   5 2 0   60%
src/secchi/__main__.py (no class)   2 2 0   0%
src/secchi/aggregate.py (no class)   64 51 0   20%
src/secchi/api/__init__.py (no class)   0 0 0   100%
src/secchi/api/base.py RegistryAdapter   4 4 7   0%
src/secchi/api/base.py AdapterBase   2 0 0   100%
src/secchi/api/base.py _ClientLease   8 0 0   100%
src/secchi/api/base.py (no class)   28 9 10   68%
src/secchi/api/cran.py CranAdapter   12 1 0   92%
src/secchi/api/cran.py (no class)   22 1 0   95%
src/secchi/api/crates.py CratesAdapter   128 60 0   53%
src/secchi/api/crates.py (no class)   40 11 0   72%
src/secchi/api/golang.py GoModuleAdapter   20 1 0   95%
src/secchi/api/golang.py (no class)   27 4 0   85%
src/secchi/api/homebrew.py HomebrewAdapter   18 1 0   94%
src/secchi/api/homebrew.py (no class)   10 0 0   100%
src/secchi/api/npm.py NpmAdapter   111 33 0   70%
src/secchi/api/npm.py (no class)   30 5 0   83%
src/secchi/api/pypi.py PyPIAdapter   109 29 0   73%
src/secchi/api/pypi.py (no class)   27 1 0   96%
src/secchi/api/sparse.py SparseAdapter   8 5 0   38%
src/secchi/api/sparse.py (no class)   12 0 0   100%
src/secchi/cache.py (no class)   93 17 0   82%
src/secchi/cli.py (no class)   184 184 0   0%
src/secchi/config.py (no class)   60 21 0   65%
src/secchi/derived.py (no class)   210 47 0   78%
src/secchi/dev.py (no class)   20 20 0   0%
src/secchi/errors.py SecchiError   0 0 0   100%
src/secchi/errors.py PackageNotFoundError   0 0 0   100%
src/secchi/errors.py RegistryUnavailableError   0 0 0   100%
src/secchi/errors.py ConfigError   0 0 0   100%
src/secchi/errors.py ReportError   0 0 0   100%
src/secchi/errors.py (no class)   6 0 0   100%
src/secchi/export.py (no class)   29 13 0   55%
src/secchi/history.py (no class)   65 37 0   43%
src/secchi/http.py SecchiAsyncClient   16 6 0   62%
src/secchi/http.py HttpClientFactory   2 0 0   100%
src/secchi/http.py (no class)   31 10 0   68%
src/secchi/mcp_server.py (no class)   82 15 0   82%
src/secchi/models.py Registry   4 3 0   25%
src/secchi/models.py PackageRef   0 0 0   100%
src/secchi/models.py Project   0 0 0   100%
src/secchi/models.py Version   0 0 0   100%
src/secchi/models.py DownloadTrendPoint   0 0 0   100%
src/secchi/models.py DownloadCounts   0 0 0   100%
src/secchi/models.py GitHubStats   0 0 0   100%
src/secchi/models.py Dependency   0 0 0   100%
src/secchi/models.py ReleaseFile   0 0 0   100%
src/secchi/models.py ReverseDependency   0 0 0   100%
src/secchi/models.py GitHubIssueEvent   0 0 0   100%
src/secchi/models.py HistorySnapshot   0 0 0   100%
src/secchi/models.py MetricTimelinePoint   0 0 0   100%
src/secchi/models.py InstallMethod   0 0 0   100%
src/secchi/models.py InstallBreakdown   0 0 0   100%
src/secchi/models.py ReverseDependencySummary   0 0 0   100%
src/secchi/models.py ActivityEventKind   2 2 0   0%
src/secchi/models.py ActivityEvent   0 0 0   100%
src/secchi/models.py HealthSubScore   0 0 0   100%
src/secchi/models.py HealthScore   0 0 0   100%
src/secchi/models.py DerivedPackageData   0 0 0   100%
src/secchi/models.py PackageInfo   0 0 0   100%
src/secchi/models.py FetchError   0 0 0   100%
src/secchi/models.py SearchResult   0 0 0   100%
src/secchi/models.py (no class)   190 0 0   100%
src/secchi/policy.py PolicyResult   0 0 0   100%
src/secchi/policy.py (no class)   13 0 0   100%
src/secchi/renderers/__init__.py (no class)   0 0 0   100%
src/secchi/renderers/reports.py ProjectSourceReport   0 0 0   100%
src/secchi/renderers/reports.py ProjectReport   0 0 0   100%
src/secchi/renderers/reports.py (no class)   111 15 0   86%
src/secchi/renderers/summary.py (no class)   17 2 0   88%
src/secchi/schema.py (no class)   5 0 0   100%
src/secchi/schemas.py SignalWarningSchema   0 0 0   100%
src/secchi/schemas.py CacheEnvelope   3 0 0   100%
src/secchi/schemas.py PackageExport   3 1 0   67%
src/secchi/schemas.py ProjectExport   3 1 0   67%
src/secchi/schemas.py ComparisonExport   3 1 0   67%
src/secchi/schemas.py (no class)   55 0 0   100%
src/secchi/services/__init__.py (no class)   0 0 0   100%
src/secchi/services/comparison.py Recommendation   0 0 0   100%
src/secchi/services/comparison.py ComparisonCandidate   0 0 0   100%
src/secchi/services/comparison.py ComparisonResult   4 0 0   100%
src/secchi/services/comparison.py (no class)   147 36 0   76%
src/secchi/services/intelligence.py IntelligenceResult   0 0 0   100%
src/secchi/services/intelligence.py ProjectIntelligence   0 0 0   100%
src/secchi/services/intelligence.py SignalWarning   0 0 0   100%
src/secchi/services/intelligence.py PackageIntelligenceService   77 32 0   58%
src/secchi/services/intelligence.py (no class)   57 2 0   96%
src/secchi/services/resolver.py (no class)   27 6 0   78%
src/secchi/services/search.py PackageSearchService   19 0 0   100%
src/secchi/services/search.py (no class)   13 0 0   100%
src/secchi/spotlight.py Spotlight   7 0 0   100%
src/secchi/spotlight.py (no class)   106 72 0   32%
src/secchi/trending.py TrendingRepo   0 0 0   100%
src/secchi/trending.py (no class)   70 46 0   34%
src/secchi/ui/__init__.py (no class)   0 0 0   100%
src/secchi/ui/app.py Secchi   232 201 0   13%
src/secchi/ui/app.py (no class)   68 0 0   100%
src/secchi/ui/palette.py (no class)   25 0 0   100%
src/secchi/ui/styles/__init__.py (no class)   0 0 0   100%
src/secchi/ui/widgets/__init__.py (no class)   0 0 0   100%
src/secchi/ui/widgets/badge.py Badge   9 9 0   0%
src/secchi/ui/widgets/badge.py (no class)   5 5 0   0%
src/secchi/ui/widgets/bar.py (no class)   11 6 0   45%
src/secchi/ui/widgets/detail.py DetailView   127 127 0   0%
src/secchi/ui/widgets/detail.py (no class)   107 68 0   36%
src/secchi/ui/widgets/header_bar.py SecchiHeader   4 4 0   0%
src/secchi/ui/widgets/header_bar.py (no class)   8 0 0   100%
src/secchi/ui/widgets/modals.py SearchScreen   44 44 0   0%
src/secchi/ui/widgets/modals.py HelpScreen   7 7 0   0%
src/secchi/ui/widgets/modals.py ExportScreen   27 27 0   0%
src/secchi/ui/widgets/modals.py (no class)   47 0 0   100%
src/secchi/ui/widgets/overview.py OverviewTab   28 10 0   64%
src/secchi/ui/widgets/overview.py AdoptionTrendPanel   6 0 0   100%
src/secchi/ui/widgets/overview.py AdoptionTrendBody   18 7 0   61%
src/secchi/ui/widgets/overview.py HealthScorePanel   9 3 0   67%
src/secchi/ui/widgets/overview.py EcosystemDistributionPanel   13 8 0   38%
src/secchi/ui/widgets/overview.py ReverseDependenciesPanel   13 9 0   31%
src/secchi/ui/widgets/overview.py HealthTimelinePanel   3 0 0   100%
src/secchi/ui/widgets/overview.py HealthTimelineBody   15 6 0   60%
src/secchi/ui/widgets/overview.py VersionAdoptionPanel   21 14 0   33%
src/secchi/ui/widgets/overview.py (no class)   204 33 0   84%
src/secchi/ui/widgets/panel.py Panel   16 6 0   62%
src/secchi/ui/widgets/panel.py PanelBody   2 0 0   100%
src/secchi/ui/widgets/panel.py (no class)   15 0 0   100%
src/secchi/ui/widgets/sidebar.py SidebarItem   12 12 0   0%
src/secchi/ui/widgets/sidebar.py ProjectItem   4 4 0   0%
src/secchi/ui/widgets/sidebar.py Sidebar   151 151 0   0%
src/secchi/ui/widgets/sidebar.py Sidebar.PackageSelected   2 2 0   0%
src/secchi/ui/widgets/sidebar.py Sidebar.ProjectSelected   2 2 0   0%
src/secchi/ui/widgets/sidebar.py (no class)   48 0 0   100%
src/secchi/ui/widgets/stat_card.py StatCard   34 34 0   0%
src/secchi/ui/widgets/stat_card.py (no class)   12 0 0   100%
src/secchi/ui/widgets/status_bar.py SecchiFooter   13 13 0   0%
src/secchi/ui/widgets/status_bar.py (no class)   37 17 0   54%
src/secchi/utils.py (no class)   194 160 0   18%
src/secchi/workflows/__init__.py (no class)   0 0 0   100%
src/secchi/workflows/check.py CheckResult   1 0 0   100%
src/secchi/workflows/check.py (no class)   20 1 0   95%
src/secchi/workflows/common.py WorkflowError   0 0 0   100%
src/secchi/workflows/common.py (no class)   15 0 0   100%
src/secchi/workflows/compare.py (no class)   24 17 0   29%
src/secchi/workflows/dashboard.py DashboardRequest   0 0 0   100%
src/secchi/workflows/dashboard.py (no class)   47 19 0   60%
src/secchi/workflows/inspect.py (no class)   5 2 0   60%
src/secchi/workflows/report.py ReportOutput   0 0 0   100%
src/secchi/workflows/report.py (no class)   33 19 0   42%
src/secchi/workflows/search.py (no class)   5 2 0   60%
src/secchi/workflows/show.py (no class)   9 9 0   0%
src/secchi/workspace/__init__.py (no class)   4 0 0   100%
src/secchi/workspace/aggregate.py (no class)   70 4 0   94%
src/secchi/workspace/state.py WorkspaceState   11 0 0   100%
src/secchi/workspace/state.py (no class)   13 0 0   100%
Total     4271 1871 17   56%

No items found using the specified filter.