Coverage report:
56%
hide covered
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.