Coverage report:
93%
hide covered
Files
Functions
Classes
coverage.py v7.15.2
, created at 2026-09-06 02:59 +0000
Statements
Branches
Total
File
class
coverage
statements
missing
excluded
coverage
branches
partial
coverage
src
/
footman
/
__init__.py
(no class)
100%
64
0
104
100%
32
0
100%
src
/
footman
/
__main__.py
(no class)
100%
1
0
2
100%
0
0
100%
src
/
footman
/
_app.py
Discovery
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_app.py
(no class)
95%
1220
66
0
92%
558
40
94%
src
/
footman
/
_binder.py
(no class)
93%
122
9
0
89%
74
8
91%
src
/
footman
/
_coerce.py
Peeled
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_coerce.py
_Markers
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_coerce.py
Group
100%
5
0
0
100%
2
0
100%
src
/
footman
/
_coerce.py
Field
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_coerce.py
EnumContractError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_coerce.py
EnumFace
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_coerce.py
(no class)
97%
478
15
0
92%
260
20
95%
src
/
footman
/
_complete.py
_Segment
100%
11
0
0
100%
2
0
100%
src
/
footman
/
_complete.py
(no class)
96%
464
18
4
93%
236
16
95%
src
/
footman
/
_config.py
ConfigError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_config.py
CascadeError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_config.py
BuiltinError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_config.py
(no class)
95%
177
8
0
93%
60
4
95%
src
/
footman
/
_describe.py
(no class)
92%
525
40
0
88%
304
28
91%
src
/
footman
/
_discover.py
TasksImportError
100%
6
0
0
100%
2
0
100%
src
/
footman
/
_discover.py
HookError
100%
8
0
0
100%
2
0
100%
src
/
footman
/
_discover.py
AliasError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_discover.py
(no class)
99%
120
1
0
98%
46
1
99%
src
/
footman
/
_encoding.py
(no class)
100%
8
0
0
100%
4
0
100%
src
/
footman
/
_executor.py
TaskResult
100%
2
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
_SiblingView
92%
13
1
0
100%
6
0
95%
src
/
footman
/
_executor.py
_PlanParam
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
_CallPlan
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
Unavailable
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
HookFailed
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
_HookPlugin
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
_Lifecycle
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
TaskHandle
91%
35
3
0
75%
8
2
88%
src
/
footman
/
_executor.py
ResultView
100%
3
0
0
100%
0
0
100%
src
/
footman
/
_executor.py
(no class)
95%
1144
57
0
89%
488
40
93%
src
/
footman
/
_fetch.py
FetchError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_fetch.py
(no class)
98%
222
4
0
92%
78
6
97%
src
/
footman
/
_futures.py
_Settled
100%
12
0
0
100%
2
0
100%
src
/
footman
/
_futures.py
_Cell
100%
4
0
0
100%
0
0
100%
src
/
footman
/
_futures.py
_Session
100%
5
0
0
100%
0
0
100%
src
/
footman
/
_futures.py
(no class)
95%
329
16
3
87%
110
12
93%
src
/
footman
/
_gc.py
(no class)
98%
92
2
0
96%
48
2
97%
src
/
footman
/
_globals.py
_ArgvProxy
69%
59
18
0
38%
8
3
66%
src
/
footman
/
_globals.py
_GuardedStdin
79%
14
3
0
100%
2
0
81%
src
/
footman
/
_globals.py
Lane
67%
3
1
0
100%
0
0
67%
src
/
footman
/
_globals.py
(no class)
96%
541
23
0
84%
158
21
93%
src
/
footman
/
_manifest.py
ManifestError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_manifest.py
CompleterError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_manifest.py
SpecError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_manifest.py
_Undescribable
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_manifest.py
(no class)
96%
584
22
0
93%
340
23
95%
src
/
footman
/
_notes.py
Note
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_notes.py
BannedNotes
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_notes.py
(no class)
96%
118
5
2
93%
44
3
95%
src
/
footman
/
_paths.py
LocationError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_paths.py
(no class)
98%
192
4
3
98%
42
1
98%
src
/
footman
/
_progress.py
Estimate
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_progress.py
StatusLine
97%
109
3
0
88%
34
4
95%
src
/
footman
/
_progress.py
(no class)
98%
108
2
0
90%
20
2
97%
src
/
footman
/
_refresh.py
(no class)
92%
107
9
2
86%
28
4
90%
src
/
footman
/
_schedule.py
_Node
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_schedule.py
NotConfirmed
100%
1
0
0
100%
0
0
100%
src
/
footman
/
_schedule.py
(no class)
94%
507
30
0
88%
198
15
92%
src
/
footman
/
_script.py
(no class)
94%
141
8
0
96%
52
2
95%
src
/
footman
/
_shellcomp.py
InstallError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_shellcomp.py
(no class)
92%
207
16
0
92%
74
4
92%
src
/
footman
/
_signals.py
Stop
100%
3
0
0
100%
0
0
100%
src
/
footman
/
_signals.py
(no class)
100%
72
0
0
95%
22
1
99%
src
/
footman
/
_split.py
ChainError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_split.py
_CoreOption
100%
9
0
0
100%
2
0
100%
src
/
footman
/
_split.py
Segment
100%
0
0
0
100%
0
0
100%
src
/
footman
/
_split.py
(no class)
94%
545
32
0
90%
266
22
93%
src
/
footman
/
_step.py
WorkItem
100%
11
0
0
100%
2
0
100%
src
/
footman
/
_step.py
StepFn
100%
24
0
0
100%
8
0
100%
src
/
footman
/
_step.py
_StepBlock
100%
14
0
0
100%
2
0
100%
src
/
footman
/
_step.py
(no class)
93%
202
15
11
92%
74
6
92%
src
/
footman
/
_suggest.py
(no class)
90%
96
10
4
74%
42
11
85%
src
/
footman
/
app.py
Brand
100%
6
0
0
100%
0
0
100%
src
/
footman
/
app.py
App
87%
30
4
0
88%
8
1
87%
src
/
footman
/
app.py
(no class)
98%
42
1
0
75%
8
2
94%
src
/
footman
/
compose.py
(no class)
93%
342
24
0
91%
186
9
92%
src
/
footman
/
context.py
AuditEntry
100%
0
0
0
100%
0
0
100%
src
/
footman
/
context.py
Argv
100%
2
0
0
100%
0
0
100%
src
/
footman
/
context.py
Result
100%
36
0
0
100%
2
0
100%
src
/
footman
/
context.py
ResultView
86%
28
4
0
100%
0
0
86%
src
/
footman
/
context.py
Context
100%
8
0
0
100%
4
0
100%
src
/
footman
/
context.py
Section
100%
0
0
0
100%
0
0
100%
src
/
footman
/
context.py
_SectionTimer
100%
7
0
0
100%
0
0
100%
src
/
footman
/
context.py
Stream
100%
13
0
2
100%
6
0
100%
src
/
footman
/
context.py
RunFailed
100%
2
0
0
100%
0
0
100%
src
/
footman
/
context.py
RunTimeout
100%
3
0
0
100%
0
0
100%
src
/
footman
/
context.py
CommandNotFound
100%
2
0
0
100%
0
0
100%
src
/
footman
/
context.py
Failed
100%
3
0
0
100%
0
0
100%
src
/
footman
/
context.py
TimedOut
92%
12
1
0
75%
4
1
88%
src
/
footman
/
context.py
Status
100%
0
0
8
100%
0
0
100%
src
/
footman
/
context.py
_Router
82%
17
3
0
75%
4
1
81%
src
/
footman
/
context.py
_Answers
96%
46
2
0
100%
30
0
97%
src
/
footman
/
context.py
Invocation
100%
8
0
0
100%
4
0
100%
src
/
footman
/
context.py
Pending
40%
5
3
0
100%
0
0
40%
src
/
footman
/
context.py
Fanout
98%
43
1
0
88%
8
1
96%
src
/
footman
/
context.py
(no class)
95%
1275
64
75
89%
390
36
94%
src
/
footman
/
docstrings.py
Docstring
100%
0
0
0
100%
0
0
100%
src
/
footman
/
docstrings.py
(no class)
99%
223
3
0
97%
104
3
98%
src
/
footman
/
env_files.py
(no class)
100%
24
0
0
88%
8
1
97%
src
/
footman
/
invocation.py
Frozen
100%
0
0
0
100%
0
0
100%
src
/
footman
/
invocation.py
Invocation
91%
23
2
0
100%
2
0
92%
src
/
footman
/
invocation.py
(no class)
100%
15
0
2
100%
0
0
100%
src
/
footman
/
markdown.py
(no class)
99%
166
2
0
95%
66
3
98%
src
/
footman
/
params.py
Secret
100%
2
0
0
100%
0
0
100%
src
/
footman
/
params.py
suggest
100%
2
0
0
100%
0
0
100%
src
/
footman
/
params.py
default
100%
2
0
0
100%
0
0
100%
src
/
footman
/
params.py
NoSplitMarker
0%
1
1
0
100%
0
0
0%
src
/
footman
/
params.py
HiddenMarker
0%
1
1
0
100%
0
0
0%
src
/
footman
/
params.py
ForwardMarker
0%
1
1
0
100%
0
0
0%
src
/
footman
/
params.py
ArgMarker
0%
1
1
0
100%
0
0
0%
src
/
footman
/
params.py
PathRequirement
67%
3
1
0
100%
0
0
67%
src
/
footman
/
params.py
matching
50%
4
2
0
50%
2
1
50%
src
/
footman
/
params.py
between
100%
2
0
0
100%
0
0
100%
src
/
footman
/
params.py
env
100%
1
0
0
100%
0
0
100%
src
/
footman
/
params.py
stdin
100%
4
0
0
100%
2
0
100%
src
/
footman
/
params.py
StdoutMarker
0%
1
1
0
100%
0
0
0%
src
/
footman
/
params.py
check
100%
1
0
0
100%
0
0
100%
src
/
footman
/
params.py
doc
100%
1
0
0
100%
0
0
100%
src
/
footman
/
params.py
ask
100%
2
0
0
100%
0
0
100%
src
/
footman
/
params.py
(no class)
98%
105
2
18
100%
0
0
98%
src
/
footman
/
profile.py
(no class)
94%
136
8
0
85%
46
5
92%
src
/
footman
/
pytest_plugin.py
_TraceRecorder
100%
25
0
0
100%
6
0
100%
src
/
footman
/
pytest_plugin.py
(no class)
100%
34
0
5
100%
2
0
100%
src
/
footman
/
registry.py
GlobalOption
90%
39
4
0
80%
10
2
88%
src
/
footman
/
registry.py
RegistrationError
100%
0
0
0
100%
0
0
100%
src
/
footman
/
registry.py
TaskOpts
100%
0
0
0
100%
0
0
100%
src
/
footman
/
registry.py
_Opted
100%
27
0
0
100%
4
0
100%
src
/
footman
/
registry.py
_TaskFn
80%
10
2
0
100%
0
0
80%
src
/
footman
/
registry.py
TaskFn
100%
0
0
8
100%
0
0
100%
src
/
footman
/
registry.py
TaskDecorator
100%
0
0
2
100%
0
0
100%
src
/
footman
/
registry.py
GroupFactory
100%
0
0
1
100%
0
0
100%
src
/
footman
/
registry.py
HookRegistrar
100%
0
0
1
100%
0
0
100%
src
/
footman
/
registry.py
Group
95%
194
10
5
89%
62
7
93%
src
/
footman
/
registry.py
TaskView
92%
37
3
0
100%
2
0
92%
src
/
footman
/
registry.py
Tasks
100%
10
0
0
100%
4
0
100%
src
/
footman
/
registry.py
(no class)
91%
657
60
80
91%
158
7
91%
src
/
footman
/
tasks
/
__init__.py
(no class)
100%
1
0
0
100%
0
0
100%
src
/
footman
/
tasks
/
docs.py
Send
100%
0
0
0
100%
0
0
100%
src
/
footman
/
tasks
/
docs.py
_Descs
75%
8
2
0
50%
2
1
70%
src
/
footman
/
tasks
/
docs.py
(no class)
95%
528
25
2
89%
176
20
94%
src
/
footman
/
tasks
/
new.py
(no class)
92%
13
1
0
50%
2
1
87%
src
/
footman
/
tasks
/
self_.py
(no class)
89%
131
15
0
85%
48
3
88%
src
/
footman
/
testing.py
InvokeResult
100%
1
0
0
100%
0
0
100%
src
/
footman
/
testing.py
Runner
100%
21
0
0
100%
6
0
100%
src
/
footman
/
testing.py
(no class)
100%
55
0
0
100%
6
0
100%
tasks.py
CoverageReport
100%
0
0
0
100%
0
0
100%
tasks.py
ToolInput
100%
0
0
0
100%
0
0
100%
tasks.py
HookEvent
100%
0
0
0
100%
0
0
100%
tasks.py
(no class)
87%
405
54
269
85%
92
6
86%
Total
94%
13584
749
613
90%
5204
412
93%
No items found using the specified filter.