golf-mcp 0.1.19__py3-none-any.whl → 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of golf-mcp might be problematic. Click here for more details.

Files changed (123) hide show
  1. golf/__init__.py +9 -1
  2. golf/_endpoints.py +6 -0
  3. golf/_endpoints_fallback.py +10 -0
  4. golf/auth/__init__.py +188 -84
  5. golf/auth/api_key.py +6 -14
  6. golf/auth/factory.py +333 -0
  7. golf/auth/helpers.py +12 -42
  8. golf/auth/providers.py +396 -0
  9. golf/auth/registry.py +256 -0
  10. golf/cli/branding.py +192 -0
  11. golf/cli/main.py +28 -69
  12. golf/commands/__init__.py +2 -0
  13. golf/commands/build.py +4 -7
  14. golf/commands/init.py +30 -53
  15. golf/commands/run.py +50 -20
  16. golf/core/builder.py +356 -412
  17. golf/core/builder_auth.py +63 -144
  18. golf/core/builder_telemetry.py +26 -3
  19. golf/core/config.py +38 -59
  20. golf/core/parser.py +132 -139
  21. golf/core/platform.py +12 -10
  22. golf/core/telemetry.py +11 -19
  23. golf/core/transformer.py +38 -15
  24. golf/examples/__pycache__/__init__.cpython-311.pyc +0 -0
  25. golf/examples/basic/.coverage +0 -0
  26. golf/examples/basic/.env.example +8 -4
  27. golf/examples/basic/README.md +117 -45
  28. golf/examples/basic/__pycache__/auth.cpython-311.pyc +0 -0
  29. golf/examples/basic/auth.py +76 -0
  30. golf/examples/basic/golf.json +2 -5
  31. golf/examples/basic/htmlcov/.gitignore +2 -0
  32. golf/examples/basic/htmlcov/class_index.html +547 -0
  33. golf/examples/basic/htmlcov/coverage_html_cb_6fb7b396.js +733 -0
  34. golf/examples/basic/htmlcov/favicon_32_cb_58284776.png +0 -0
  35. golf/examples/basic/htmlcov/function_index.html +2091 -0
  36. golf/examples/basic/htmlcov/index.html +349 -0
  37. golf/examples/basic/htmlcov/keybd_closed_cb_ce680311.png +0 -0
  38. golf/examples/basic/htmlcov/status.json +1 -0
  39. golf/examples/basic/htmlcov/style_cb_8e611ae1.css +337 -0
  40. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496___init___py.html +323 -0
  41. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_api_key_py.html +170 -0
  42. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_factory_py.html +430 -0
  43. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_helpers_py.html +288 -0
  44. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_providers_py.html +493 -0
  45. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_registry_py.html +353 -0
  46. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950___init___py.html +120 -0
  47. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950_instrumentation_py.html +1535 -0
  48. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db___init___py.html +98 -0
  49. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_branding_py.html +289 -0
  50. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_main_py.html +476 -0
  51. golf/examples/basic/htmlcov/z_5a6c4e6bcc86fb2f___init___py.html +97 -0
  52. golf/examples/basic/htmlcov/z_6cadab9ec0df475d___init___py.html +102 -0
  53. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_build_py.html +178 -0
  54. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_init_py.html +387 -0
  55. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_run_py.html +222 -0
  56. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4___init___py.html +106 -0
  57. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4__endpoints_fallback_py.html +107 -0
  58. golf/examples/basic/htmlcov/z_7ba499ed22986217___init___py.html +98 -0
  59. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_auth_py.html +306 -0
  60. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_metrics_py.html +329 -0
  61. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_py.html +1471 -0
  62. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_telemetry_py.html +186 -0
  63. golf/examples/basic/htmlcov/z_7ba499ed22986217_config_py.html +315 -0
  64. golf/examples/basic/htmlcov/z_7ba499ed22986217_parser_py.html +1149 -0
  65. golf/examples/basic/htmlcov/z_7ba499ed22986217_platform_py.html +279 -0
  66. golf/examples/basic/htmlcov/z_7ba499ed22986217_telemetry_py.html +589 -0
  67. golf/examples/basic/htmlcov/z_7ba499ed22986217_transformer_py.html +286 -0
  68. golf/examples/basic/htmlcov/z_7d7da37693a43688___init___py.html +107 -0
  69. golf/examples/basic/htmlcov/z_7d7da37693a43688_collector_py.html +417 -0
  70. golf/examples/basic/htmlcov/z_7d7da37693a43688_registry_py.html +109 -0
  71. golf/examples/basic/htmlcov/z_abe733142b40ad4e___init___py.html +109 -0
  72. golf/examples/basic/htmlcov/z_abe733142b40ad4e_context_py.html +150 -0
  73. golf/examples/basic/htmlcov/z_abe733142b40ad4e_elicitation_py.html +267 -0
  74. golf/examples/basic/htmlcov/z_abe733142b40ad4e_sampling_py.html +318 -0
  75. golf/examples/basic/prompts/__pycache__/welcome.cpython-311.pyc +0 -0
  76. golf/examples/basic/prompts/welcome.py +3 -5
  77. golf/examples/basic/resources/__pycache__/current_time.cpython-311.pyc +0 -0
  78. golf/examples/basic/resources/__pycache__/info.cpython-311.pyc +0 -0
  79. golf/examples/basic/resources/current_time.py +5 -13
  80. golf/examples/basic/resources/weather/__pycache__/common.cpython-311.pyc +0 -0
  81. golf/examples/basic/resources/weather/__pycache__/current.cpython-311.pyc +0 -0
  82. golf/examples/basic/resources/weather/__pycache__/forecast.cpython-311.pyc +0 -0
  83. golf/examples/basic/resources/weather/city.py +46 -0
  84. golf/examples/basic/resources/weather/common.py +4 -11
  85. golf/examples/basic/resources/weather/current.py +5 -5
  86. golf/examples/basic/resources/weather/forecast.py +5 -5
  87. golf/examples/basic/tools/__pycache__/calculator.cpython-311.pyc +0 -0
  88. golf/examples/basic/tools/calculator.py +94 -0
  89. golf/examples/basic/tools/say/__pycache__/hello.cpython-311.pyc +0 -0
  90. golf/examples/basic/tools/say/hello.py +65 -0
  91. golf/metrics/collector.py +100 -19
  92. golf/telemetry/__init__.py +4 -0
  93. golf/telemetry/instrumentation.py +496 -174
  94. golf/utilities/__init__.py +12 -0
  95. golf/utilities/context.py +53 -0
  96. golf/utilities/elicitation.py +170 -0
  97. golf/utilities/sampling.py +221 -0
  98. {golf_mcp-0.1.19.dist-info → golf_mcp-0.2.0.dist-info}/METADATA +56 -110
  99. golf_mcp-0.2.0.dist-info/RECORD +110 -0
  100. golf/auth/oauth.py +0 -861
  101. golf/auth/provider.py +0 -115
  102. golf/examples/api_key/.env +0 -2
  103. golf/examples/api_key/.env.example +0 -1
  104. golf/examples/api_key/README.md +0 -84
  105. golf/examples/api_key/golf.json +0 -8
  106. golf/examples/api_key/pre_build.py +0 -11
  107. golf/examples/api_key/tools/issues/create.py +0 -93
  108. golf/examples/api_key/tools/issues/list.py +0 -92
  109. golf/examples/api_key/tools/repos/list.py +0 -111
  110. golf/examples/api_key/tools/search/code.py +0 -106
  111. golf/examples/api_key/tools/users/get.py +0 -82
  112. golf/examples/basic/.env +0 -5
  113. golf/examples/basic/pre_build.py +0 -28
  114. golf/examples/basic/tools/github_user.py +0 -65
  115. golf/examples/basic/tools/hello.py +0 -34
  116. golf/examples/basic/tools/payments/charge.py +0 -70
  117. golf/examples/basic/tools/payments/common.py +0 -36
  118. golf/examples/basic/tools/payments/refund.py +0 -61
  119. golf_mcp-0.1.19.dist-info/RECORD +0 -60
  120. {golf_mcp-0.1.19.dist-info → golf_mcp-0.2.0.dist-info}/WHEEL +0 -0
  121. {golf_mcp-0.1.19.dist-info → golf_mcp-0.2.0.dist-info}/entry_points.txt +0 -0
  122. {golf_mcp-0.1.19.dist-info → golf_mcp-0.2.0.dist-info}/licenses/LICENSE +0 -0
  123. {golf_mcp-0.1.19.dist-info → golf_mcp-0.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,547 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <title>Coverage report</title>
6
+ <link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7
+ <link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8
+ <script src="coverage_html_cb_6fb7b396.js" defer></script>
9
+ </head>
10
+ <body class="indexfile">
11
+ <header>
12
+ <div class="content">
13
+ <h1>Coverage report:
14
+ <span class="pc_cov">10%</span>
15
+ </h1>
16
+ <aside id="help_panel_wrapper">
17
+ <input id="help_panel_state" type="checkbox">
18
+ <label for="help_panel_state">
19
+ <img id="keyboard_icon" src="keybd_closed_cb_ce680311.png" alt="Show/hide keyboard shortcuts">
20
+ </label>
21
+ <div id="help_panel">
22
+ <p class="legend">Shortcuts on this page</p>
23
+ <div class="keyhelp">
24
+ <p>
25
+ <kbd>f</kbd>
26
+ <kbd>n</kbd>
27
+ <kbd>s</kbd>
28
+ <kbd>m</kbd>
29
+ <kbd>x</kbd>
30
+ <kbd>c</kbd>
31
+ &nbsp; change column sorting
32
+ </p>
33
+ <p>
34
+ <kbd>[</kbd>
35
+ <kbd>]</kbd>
36
+ &nbsp; prev/next file
37
+ </p>
38
+ <p>
39
+ <kbd>?</kbd> &nbsp; show/hide this help
40
+ </p>
41
+ </div>
42
+ </div>
43
+ </aside>
44
+ <form id="filter_container">
45
+ <input id="filter" type="text" value="" placeholder="filter...">
46
+ <div>
47
+ <input id="hide100" type="checkbox" >
48
+ <label for="hide100">hide covered</label>
49
+ </div>
50
+ </form>
51
+ <h2>
52
+ <a class="button" href="index.html">Files</a>
53
+ <a class="button" href="function_index.html">Functions</a>
54
+ <a class="button current">Classes</a>
55
+ </h2>
56
+ <p class="text">
57
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
58
+ created at 2025-08-16 18:46 +0200
59
+ </p>
60
+ </div>
61
+ </header>
62
+ <main id="index">
63
+ <table class="index" data-sortable>
64
+ <thead>
65
+ <tr class="tablehead" title="Click to sort">
66
+ <th id="file" class="name left" aria-sort="none" data-shortcut="f">File<span class="arrows"></span></th>
67
+ <th id="region" class="name left" aria-sort="none" data-default-sort-order="ascending" data-shortcut="n">class<span class="arrows"></span></th>
68
+ <th id="statements" aria-sort="none" data-default-sort-order="descending" data-shortcut="s">statements<span class="arrows"></span></th>
69
+ <th id="missing" aria-sort="none" data-default-sort-order="descending" data-shortcut="m">missing<span class="arrows"></span></th>
70
+ <th id="excluded" aria-sort="none" data-default-sort-order="descending" data-shortcut="x">excluded<span class="arrows"></span></th>
71
+ <th id="coverage" class="right" aria-sort="none" data-shortcut="c">coverage<span class="arrows"></span></th>
72
+ </tr>
73
+ </thead>
74
+ <tbody>
75
+ <tr class="region">
76
+ <td class="name left"><a href="z_6fcdee0582ba84e4___init___py.html">/Users/antonigmitruk/golf/src/golf/__init__.py</a></td>
77
+ <td class="name left"><a href="z_6fcdee0582ba84e4___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
78
+ <td>5</td>
79
+ <td>0</td>
80
+ <td>0</td>
81
+ <td class="right" data-ratio="5 5">100%</td>
82
+ </tr>
83
+ <tr class="region">
84
+ <td class="name left"><a href="z_6fcdee0582ba84e4__endpoints_fallback_py.html">/Users/antonigmitruk/golf/src/golf/_endpoints_fallback.py</a></td>
85
+ <td class="name left"><a href="z_6fcdee0582ba84e4__endpoints_fallback_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
86
+ <td>3</td>
87
+ <td>0</td>
88
+ <td>0</td>
89
+ <td class="right" data-ratio="3 3">100%</td>
90
+ </tr>
91
+ <tr class="region">
92
+ <td class="name left"><a href="z_1c9a91c0e91c8496___init___py.html">/Users/antonigmitruk/golf/src/golf/auth/__init__.py</a></td>
93
+ <td class="name left"><a href="z_1c9a91c0e91c8496___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
94
+ <td>27</td>
95
+ <td>27</td>
96
+ <td>0</td>
97
+ <td class="right" data-ratio="0 27">0%</td>
98
+ </tr>
99
+ <tr class="region">
100
+ <td class="name left"><a href="z_1c9a91c0e91c8496_api_key_py.html#t11">/Users/antonigmitruk/golf/src/golf/auth/api_key.py</a></td>
101
+ <td class="name left"><a href="z_1c9a91c0e91c8496_api_key_py.html#t11"><data value='ApiKeyConfig'>ApiKeyConfig</data></a></td>
102
+ <td>0</td>
103
+ <td>0</td>
104
+ <td>0</td>
105
+ <td class="right" data-ratio="0 0">100%</td>
106
+ </tr>
107
+ <tr class="region">
108
+ <td class="name left"><a href="z_1c9a91c0e91c8496_api_key_py.html">/Users/antonigmitruk/golf/src/golf/auth/api_key.py</a></td>
109
+ <td class="name left"><a href="z_1c9a91c0e91c8496_api_key_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
110
+ <td>12</td>
111
+ <td>12</td>
112
+ <td>0</td>
113
+ <td class="right" data-ratio="0 12">0%</td>
114
+ </tr>
115
+ <tr class="region">
116
+ <td class="name left"><a href="z_1c9a91c0e91c8496_factory_py.html">/Users/antonigmitruk/golf/src/golf/auth/factory.py</a></td>
117
+ <td class="name left"><a href="z_1c9a91c0e91c8496_factory_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
118
+ <td>131</td>
119
+ <td>131</td>
120
+ <td>0</td>
121
+ <td class="right" data-ratio="0 131">0%</td>
122
+ </tr>
123
+ <tr class="region">
124
+ <td class="name left"><a href="z_1c9a91c0e91c8496_helpers_py.html">/Users/antonigmitruk/golf/src/golf/auth/helpers.py</a></td>
125
+ <td class="name left"><a href="z_1c9a91c0e91c8496_helpers_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
126
+ <td>72</td>
127
+ <td>72</td>
128
+ <td>0</td>
129
+ <td class="right" data-ratio="0 72">0%</td>
130
+ </tr>
131
+ <tr class="region">
132
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t14">/Users/antonigmitruk/golf/src/golf/auth/providers.py</a></td>
133
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t14"><data value='JWTAuthConfig'>JWTAuthConfig</data></a></td>
134
+ <td>15</td>
135
+ <td>15</td>
136
+ <td>0</td>
137
+ <td class="right" data-ratio="0 15">0%</td>
138
+ </tr>
139
+ <tr class="region">
140
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t83">/Users/antonigmitruk/golf/src/golf/auth/providers.py</a></td>
141
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t83"><data value='StaticTokenConfig'>StaticTokenConfig</data></a></td>
142
+ <td>0</td>
143
+ <td>0</td>
144
+ <td>0</td>
145
+ <td class="right" data-ratio="0 0">100%</td>
146
+ </tr>
147
+ <tr class="region">
148
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t104">/Users/antonigmitruk/golf/src/golf/auth/providers.py</a></td>
149
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t104"><data value='OAuthServerConfig'>OAuthServerConfig</data></a></td>
150
+ <td>68</td>
151
+ <td>68</td>
152
+ <td>0</td>
153
+ <td class="right" data-ratio="0 68">0%</td>
154
+ </tr>
155
+ <tr class="region">
156
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t285">/Users/antonigmitruk/golf/src/golf/auth/providers.py</a></td>
157
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html#t285"><data value='RemoteAuthConfig'>RemoteAuthConfig</data></a></td>
158
+ <td>37</td>
159
+ <td>37</td>
160
+ <td>0</td>
161
+ <td class="right" data-ratio="0 37">0%</td>
162
+ </tr>
163
+ <tr class="region">
164
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html">/Users/antonigmitruk/golf/src/golf/auth/providers.py</a></td>
165
+ <td class="name left"><a href="z_1c9a91c0e91c8496_providers_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
166
+ <td>59</td>
167
+ <td>59</td>
168
+ <td>0</td>
169
+ <td class="right" data-ratio="0 59">0%</td>
170
+ </tr>
171
+ <tr class="region">
172
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html#t16">/Users/antonigmitruk/golf/src/golf/auth/registry.py</a></td>
173
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html#t16"><data value='AuthProviderFactory'>AuthProviderFactory</data></a></td>
174
+ <td>1</td>
175
+ <td>1</td>
176
+ <td>0</td>
177
+ <td class="right" data-ratio="0 1">0%</td>
178
+ </tr>
179
+ <tr class="region">
180
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html#t39">/Users/antonigmitruk/golf/src/golf/auth/registry.py</a></td>
181
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html#t39"><data value='BaseProviderPlugin'>BaseProviderPlugin</data></a></td>
182
+ <td>5</td>
183
+ <td>5</td>
184
+ <td>0</td>
185
+ <td class="right" data-ratio="0 5">0%</td>
186
+ </tr>
187
+ <tr class="region">
188
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html#t88">/Users/antonigmitruk/golf/src/golf/auth/registry.py</a></td>
189
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html#t88"><data value='AuthProviderRegistry'>AuthProviderRegistry</data></a></td>
190
+ <td>30</td>
191
+ <td>30</td>
192
+ <td>0</td>
193
+ <td class="right" data-ratio="0 30">0%</td>
194
+ </tr>
195
+ <tr class="region">
196
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html">/Users/antonigmitruk/golf/src/golf/auth/registry.py</a></td>
197
+ <td class="name left"><a href="z_1c9a91c0e91c8496_registry_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
198
+ <td>35</td>
199
+ <td>35</td>
200
+ <td>0</td>
201
+ <td class="right" data-ratio="0 35">0%</td>
202
+ </tr>
203
+ <tr class="region">
204
+ <td class="name left"><a href="z_4b8b9dd4ccccc5db___init___py.html">/Users/antonigmitruk/golf/src/golf/cli/__init__.py</a></td>
205
+ <td class="name left"><a href="z_4b8b9dd4ccccc5db___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
206
+ <td>0</td>
207
+ <td>0</td>
208
+ <td>0</td>
209
+ <td class="right" data-ratio="0 0">100%</td>
210
+ </tr>
211
+ <tr class="region">
212
+ <td class="name left"><a href="z_4b8b9dd4ccccc5db_branding_py.html">/Users/antonigmitruk/golf/src/golf/cli/branding.py</a></td>
213
+ <td class="name left"><a href="z_4b8b9dd4ccccc5db_branding_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
214
+ <td>85</td>
215
+ <td>85</td>
216
+ <td>0</td>
217
+ <td class="right" data-ratio="0 85">0%</td>
218
+ </tr>
219
+ <tr class="region">
220
+ <td class="name left"><a href="z_4b8b9dd4ccccc5db_main_py.html">/Users/antonigmitruk/golf/src/golf/cli/main.py</a></td>
221
+ <td class="name left"><a href="z_4b8b9dd4ccccc5db_main_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
222
+ <td>124</td>
223
+ <td>124</td>
224
+ <td>0</td>
225
+ <td class="right" data-ratio="0 124">0%</td>
226
+ </tr>
227
+ <tr class="region">
228
+ <td class="name left"><a href="z_6cadab9ec0df475d___init___py.html">/Users/antonigmitruk/golf/src/golf/commands/__init__.py</a></td>
229
+ <td class="name left"><a href="z_6cadab9ec0df475d___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
230
+ <td>2</td>
231
+ <td>2</td>
232
+ <td>0</td>
233
+ <td class="right" data-ratio="0 2">0%</td>
234
+ </tr>
235
+ <tr class="region">
236
+ <td class="name left"><a href="z_6cadab9ec0df475d_build_py.html">/Users/antonigmitruk/golf/src/golf/commands/build.py</a></td>
237
+ <td class="name left"><a href="z_6cadab9ec0df475d_build_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
238
+ <td>17</td>
239
+ <td>17</td>
240
+ <td>0</td>
241
+ <td class="right" data-ratio="0 17">0%</td>
242
+ </tr>
243
+ <tr class="region">
244
+ <td class="name left"><a href="z_6cadab9ec0df475d_init_py.html">/Users/antonigmitruk/golf/src/golf/commands/init.py</a></td>
245
+ <td class="name left"><a href="z_6cadab9ec0df475d_init_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
246
+ <td>142</td>
247
+ <td>142</td>
248
+ <td>0</td>
249
+ <td class="right" data-ratio="0 142">0%</td>
250
+ </tr>
251
+ <tr class="region">
252
+ <td class="name left"><a href="z_6cadab9ec0df475d_run_py.html">/Users/antonigmitruk/golf/src/golf/commands/run.py</a></td>
253
+ <td class="name left"><a href="z_6cadab9ec0df475d_run_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
254
+ <td>65</td>
255
+ <td>65</td>
256
+ <td>0</td>
257
+ <td class="right" data-ratio="0 65">0%</td>
258
+ </tr>
259
+ <tr class="region">
260
+ <td class="name left"><a href="z_7ba499ed22986217___init___py.html">/Users/antonigmitruk/golf/src/golf/core/__init__.py</a></td>
261
+ <td class="name left"><a href="z_7ba499ed22986217___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
262
+ <td>0</td>
263
+ <td>0</td>
264
+ <td>0</td>
265
+ <td class="right" data-ratio="0 0">100%</td>
266
+ </tr>
267
+ <tr class="region">
268
+ <td class="name left"><a href="z_7ba499ed22986217_builder_py.html#t31">/Users/antonigmitruk/golf/src/golf/core/builder.py</a></td>
269
+ <td class="name left"><a href="z_7ba499ed22986217_builder_py.html#t31"><data value='ManifestBuilder'>ManifestBuilder</data></a></td>
270
+ <td>45</td>
271
+ <td>45</td>
272
+ <td>0</td>
273
+ <td class="right" data-ratio="0 45">0%</td>
274
+ </tr>
275
+ <tr class="region">
276
+ <td class="name left"><a href="z_7ba499ed22986217_builder_py.html#t280">/Users/antonigmitruk/golf/src/golf/core/builder.py</a></td>
277
+ <td class="name left"><a href="z_7ba499ed22986217_builder_py.html#t280"><data value='CodeGenerator'>CodeGenerator</data></a></td>
278
+ <td>293</td>
279
+ <td>293</td>
280
+ <td>0</td>
281
+ <td class="right" data-ratio="0 293">0%</td>
282
+ </tr>
283
+ <tr class="region">
284
+ <td class="name left"><a href="z_7ba499ed22986217_builder_py.html">/Users/antonigmitruk/golf/src/golf/core/builder.py</a></td>
285
+ <td class="name left"><a href="z_7ba499ed22986217_builder_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
286
+ <td>250</td>
287
+ <td>250</td>
288
+ <td>0</td>
289
+ <td class="right" data-ratio="0 250">0%</td>
290
+ </tr>
291
+ <tr class="region">
292
+ <td class="name left"><a href="z_7ba499ed22986217_builder_auth_py.html">/Users/antonigmitruk/golf/src/golf/core/builder_auth.py</a></td>
293
+ <td class="name left"><a href="z_7ba499ed22986217_builder_auth_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
294
+ <td>32</td>
295
+ <td>32</td>
296
+ <td>0</td>
297
+ <td class="right" data-ratio="0 32">0%</td>
298
+ </tr>
299
+ <tr class="region">
300
+ <td class="name left"><a href="z_7ba499ed22986217_builder_metrics_py.html">/Users/antonigmitruk/golf/src/golf/core/builder_metrics.py</a></td>
301
+ <td class="name left"><a href="z_7ba499ed22986217_builder_metrics_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
302
+ <td>12</td>
303
+ <td>12</td>
304
+ <td>0</td>
305
+ <td class="right" data-ratio="0 12">0%</td>
306
+ </tr>
307
+ <tr class="region">
308
+ <td class="name left"><a href="z_7ba499ed22986217_builder_telemetry_py.html">/Users/antonigmitruk/golf/src/golf/core/builder_telemetry.py</a></td>
309
+ <td class="name left"><a href="z_7ba499ed22986217_builder_telemetry_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
310
+ <td>17</td>
311
+ <td>17</td>
312
+ <td>0</td>
313
+ <td class="right" data-ratio="0 17">0%</td>
314
+ </tr>
315
+ <tr class="region">
316
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html#t13">/Users/antonigmitruk/golf/src/golf/core/config.py</a></td>
317
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html#t13"><data value='AuthConfig'>AuthConfig</data></a></td>
318
+ <td>4</td>
319
+ <td>4</td>
320
+ <td>0</td>
321
+ <td class="right" data-ratio="0 4">0%</td>
322
+ </tr>
323
+ <tr class="region">
324
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html#t32">/Users/antonigmitruk/golf/src/golf/core/config.py</a></td>
325
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html#t32"><data value='DeployConfig'>DeployConfig</data></a></td>
326
+ <td>0</td>
327
+ <td>0</td>
328
+ <td>0</td>
329
+ <td class="right" data-ratio="0 0">100%</td>
330
+ </tr>
331
+ <tr class="region">
332
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html#t39">/Users/antonigmitruk/golf/src/golf/core/config.py</a></td>
333
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html#t39"><data value='Settings'>Settings</data></a></td>
334
+ <td>0</td>
335
+ <td>0</td>
336
+ <td>0</td>
337
+ <td class="right" data-ratio="0 0">100%</td>
338
+ </tr>
339
+ <tr class="region">
340
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html">/Users/antonigmitruk/golf/src/golf/core/config.py</a></td>
341
+ <td class="name left"><a href="z_7ba499ed22986217_config_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
342
+ <td>92</td>
343
+ <td>92</td>
344
+ <td>0</td>
345
+ <td class="right" data-ratio="0 92">0%</td>
346
+ </tr>
347
+ <tr class="region">
348
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html#t15">/Users/antonigmitruk/golf/src/golf/core/parser.py</a></td>
349
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html#t15"><data value='ComponentType'>ComponentType</data></a></td>
350
+ <td>0</td>
351
+ <td>0</td>
352
+ <td>0</td>
353
+ <td class="right" data-ratio="0 0">100%</td>
354
+ </tr>
355
+ <tr class="region">
356
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html#t26">/Users/antonigmitruk/golf/src/golf/core/parser.py</a></td>
357
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html#t26"><data value='ParsedComponent'>ParsedComponent</data></a></td>
358
+ <td>0</td>
359
+ <td>0</td>
360
+ <td>0</td>
361
+ <td class="right" data-ratio="0 0">100%</td>
362
+ </tr>
363
+ <tr class="region">
364
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html#t43">/Users/antonigmitruk/golf/src/golf/core/parser.py</a></td>
365
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html#t43"><data value='AstParser'>AstParser</data></a></td>
366
+ <td>476</td>
367
+ <td>179</td>
368
+ <td>0</td>
369
+ <td class="right" data-ratio="297 476">62%</td>
370
+ </tr>
371
+ <tr class="region">
372
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html">/Users/antonigmitruk/golf/src/golf/core/parser.py</a></td>
373
+ <td class="name left"><a href="z_7ba499ed22986217_parser_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
374
+ <td>109</td>
375
+ <td>38</td>
376
+ <td>0</td>
377
+ <td class="right" data-ratio="71 109">65%</td>
378
+ </tr>
379
+ <tr class="region">
380
+ <td class="name left"><a href="z_7ba499ed22986217_platform_py.html">/Users/antonigmitruk/golf/src/golf/core/platform.py</a></td>
381
+ <td class="name left"><a href="z_7ba499ed22986217_platform_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
382
+ <td>70</td>
383
+ <td>70</td>
384
+ <td>0</td>
385
+ <td class="right" data-ratio="0 70">0%</td>
386
+ </tr>
387
+ <tr class="region">
388
+ <td class="name left"><a href="z_7ba499ed22986217_telemetry_py.html">/Users/antonigmitruk/golf/src/golf/core/telemetry.py</a></td>
389
+ <td class="name left"><a href="z_7ba499ed22986217_telemetry_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
390
+ <td>201</td>
391
+ <td>201</td>
392
+ <td>0</td>
393
+ <td class="right" data-ratio="0 201">0%</td>
394
+ </tr>
395
+ <tr class="region">
396
+ <td class="name left"><a href="z_7ba499ed22986217_transformer_py.html#t14">/Users/antonigmitruk/golf/src/golf/core/transformer.py</a></td>
397
+ <td class="name left"><a href="z_7ba499ed22986217_transformer_py.html#t14"><data value='ImportTransformer'>ImportTransformer</data></a></td>
398
+ <td>33</td>
399
+ <td>33</td>
400
+ <td>0</td>
401
+ <td class="right" data-ratio="0 33">0%</td>
402
+ </tr>
403
+ <tr class="region">
404
+ <td class="name left"><a href="z_7ba499ed22986217_transformer_py.html">/Users/antonigmitruk/golf/src/golf/core/transformer.py</a></td>
405
+ <td class="name left"><a href="z_7ba499ed22986217_transformer_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
406
+ <td>45</td>
407
+ <td>45</td>
408
+ <td>0</td>
409
+ <td class="right" data-ratio="0 45">0%</td>
410
+ </tr>
411
+ <tr class="region">
412
+ <td class="name left"><a href="z_5a6c4e6bcc86fb2f___init___py.html">/Users/antonigmitruk/golf/src/golf/examples/__init__.py</a></td>
413
+ <td class="name left"><a href="z_5a6c4e6bcc86fb2f___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
414
+ <td>0</td>
415
+ <td>0</td>
416
+ <td>0</td>
417
+ <td class="right" data-ratio="0 0">100%</td>
418
+ </tr>
419
+ <tr class="region">
420
+ <td class="name left"><a href="z_7d7da37693a43688___init___py.html">/Users/antonigmitruk/golf/src/golf/metrics/__init__.py</a></td>
421
+ <td class="name left"><a href="z_7d7da37693a43688___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
422
+ <td>3</td>
423
+ <td>3</td>
424
+ <td>0</td>
425
+ <td class="right" data-ratio="0 3">0%</td>
426
+ </tr>
427
+ <tr class="region">
428
+ <td class="name left"><a href="z_7d7da37693a43688_collector_py.html#t9">/Users/antonigmitruk/golf/src/golf/metrics/collector.py</a></td>
429
+ <td class="name left"><a href="z_7d7da37693a43688_collector_py.html#t9"><data value='MetricsCollector'>MetricsCollector</data></a></td>
430
+ <td>68</td>
431
+ <td>68</td>
432
+ <td>0</td>
433
+ <td class="right" data-ratio="0 68">0%</td>
434
+ </tr>
435
+ <tr class="region">
436
+ <td class="name left"><a href="z_7d7da37693a43688_collector_py.html">/Users/antonigmitruk/golf/src/golf/metrics/collector.py</a></td>
437
+ <td class="name left"><a href="z_7d7da37693a43688_collector_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
438
+ <td>27</td>
439
+ <td>27</td>
440
+ <td>0</td>
441
+ <td class="right" data-ratio="0 27">0%</td>
442
+ </tr>
443
+ <tr class="region">
444
+ <td class="name left"><a href="z_7d7da37693a43688_registry_py.html">/Users/antonigmitruk/golf/src/golf/metrics/registry.py</a></td>
445
+ <td class="name left"><a href="z_7d7da37693a43688_registry_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
446
+ <td>3</td>
447
+ <td>3</td>
448
+ <td>0</td>
449
+ <td class="right" data-ratio="0 3">0%</td>
450
+ </tr>
451
+ <tr class="region">
452
+ <td class="name left"><a href="z_3ec3b3f490dc0950___init___py.html">/Users/antonigmitruk/golf/src/golf/telemetry/__init__.py</a></td>
453
+ <td class="name left"><a href="z_3ec3b3f490dc0950___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
454
+ <td>2</td>
455
+ <td>2</td>
456
+ <td>0</td>
457
+ <td class="right" data-ratio="0 2">0%</td>
458
+ </tr>
459
+ <tr class="region">
460
+ <td class="name left"><a href="z_3ec3b3f490dc0950_instrumentation_py.html#t1177">/Users/antonigmitruk/golf/src/golf/telemetry/instrumentation.py</a></td>
461
+ <td class="name left"><a href="z_3ec3b3f490dc0950_instrumentation_py.html#t1177"><data value='BoundedSessionTracker'>BoundedSessionTracker</data></a></td>
462
+ <td>19</td>
463
+ <td>19</td>
464
+ <td>0</td>
465
+ <td class="right" data-ratio="0 19">0%</td>
466
+ </tr>
467
+ <tr class="region">
468
+ <td class="name left"><a href="z_3ec3b3f490dc0950_instrumentation_py.html#t1220">/Users/antonigmitruk/golf/src/golf/telemetry/instrumentation.py</a></td>
469
+ <td class="name left"><a href="z_3ec3b3f490dc0950_instrumentation_py.html#t1220"><data value='SessionTracingMiddleware'>SessionTracingMiddleware</data></a></td>
470
+ <td>83</td>
471
+ <td>83</td>
472
+ <td>0</td>
473
+ <td class="right" data-ratio="0 83">0%</td>
474
+ </tr>
475
+ <tr class="region">
476
+ <td class="name left"><a href="z_3ec3b3f490dc0950_instrumentation_py.html">/Users/antonigmitruk/golf/src/golf/telemetry/instrumentation.py</a></td>
477
+ <td class="name left"><a href="z_3ec3b3f490dc0950_instrumentation_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
478
+ <td>677</td>
479
+ <td>677</td>
480
+ <td>0</td>
481
+ <td class="right" data-ratio="0 677">0%</td>
482
+ </tr>
483
+ <tr class="region">
484
+ <td class="name left"><a href="z_abe733142b40ad4e___init___py.html">/Users/antonigmitruk/golf/src/golf/utilities/__init__.py</a></td>
485
+ <td class="name left"><a href="z_abe733142b40ad4e___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
486
+ <td>4</td>
487
+ <td>4</td>
488
+ <td>0</td>
489
+ <td class="right" data-ratio="0 4">0%</td>
490
+ </tr>
491
+ <tr class="region">
492
+ <td class="name left"><a href="z_abe733142b40ad4e_context_py.html">/Users/antonigmitruk/golf/src/golf/utilities/context.py</a></td>
493
+ <td class="name left"><a href="z_abe733142b40ad4e_context_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
494
+ <td>12</td>
495
+ <td>12</td>
496
+ <td>0</td>
497
+ <td class="right" data-ratio="0 12">0%</td>
498
+ </tr>
499
+ <tr class="region">
500
+ <td class="name left"><a href="z_abe733142b40ad4e_elicitation_py.html">/Users/antonigmitruk/golf/src/golf/utilities/elicitation.py</a></td>
501
+ <td class="name left"><a href="z_abe733142b40ad4e_elicitation_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
502
+ <td>47</td>
503
+ <td>47</td>
504
+ <td>0</td>
505
+ <td class="right" data-ratio="0 47">0%</td>
506
+ </tr>
507
+ <tr class="region">
508
+ <td class="name left"><a href="z_abe733142b40ad4e_sampling_py.html">/Users/antonigmitruk/golf/src/golf/utilities/sampling.py</a></td>
509
+ <td class="name left"><a href="z_abe733142b40ad4e_sampling_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
510
+ <td>39</td>
511
+ <td>39</td>
512
+ <td>0</td>
513
+ <td class="right" data-ratio="0 39">0%</td>
514
+ </tr>
515
+ </tbody>
516
+ <tfoot>
517
+ <tr class="total">
518
+ <td class="name left">Total</td>
519
+ <td class="name left">&nbsp;</td>
520
+ <td>3598</td>
521
+ <td>3222</td>
522
+ <td>0</td>
523
+ <td class="right" data-ratio="376 3598">10%</td>
524
+ </tr>
525
+ </tfoot>
526
+ </table>
527
+ <p id="no_rows">
528
+ No items found using the specified filter.
529
+ </p>
530
+ </main>
531
+ <footer>
532
+ <div class="content">
533
+ <p>
534
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
535
+ created at 2025-08-16 18:46 +0200
536
+ </p>
537
+ </div>
538
+ <aside class="hidden">
539
+ <a id="prevFileLink" class="nav" href=""></a>
540
+ <a id="nextFileLink" class="nav" href=""></a>
541
+ <button type="button" class="button_prev_file" data-shortcut="["></button>
542
+ <button type="button" class="button_next_file" data-shortcut="]"></button>
543
+ <button type="button" class="button_show_hide_help" data-shortcut="?"></button>
544
+ </aside>
545
+ </footer>
546
+ </body>
547
+ </html>