golf-mcp 0.2.2__py3-none-any.whl → 0.2.4__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.
- golf/__init__.py +1 -1
- golf/_endpoints.py.in +6 -0
- {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/METADATA +1 -1
- golf_mcp-0.2.4.dist-info/RECORD +56 -0
- golf/examples/__pycache__/__init__.cpython-311.pyc +0 -0
- golf/examples/basic/.coverage +0 -0
- golf/examples/basic/__pycache__/auth.cpython-311.pyc +0 -0
- golf/examples/basic/htmlcov/.gitignore +0 -2
- golf/examples/basic/htmlcov/class_index.html +0 -547
- golf/examples/basic/htmlcov/coverage_html_cb_6fb7b396.js +0 -733
- golf/examples/basic/htmlcov/favicon_32_cb_58284776.png +0 -0
- golf/examples/basic/htmlcov/function_index.html +0 -2091
- golf/examples/basic/htmlcov/index.html +0 -349
- golf/examples/basic/htmlcov/keybd_closed_cb_ce680311.png +0 -0
- golf/examples/basic/htmlcov/status.json +0 -1
- golf/examples/basic/htmlcov/style_cb_8e611ae1.css +0 -337
- golf/examples/basic/htmlcov/z_1c9a91c0e91c8496___init___py.html +0 -323
- golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_api_key_py.html +0 -170
- golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_factory_py.html +0 -430
- golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_helpers_py.html +0 -288
- golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_providers_py.html +0 -493
- golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_registry_py.html +0 -353
- golf/examples/basic/htmlcov/z_3ec3b3f490dc0950___init___py.html +0 -120
- golf/examples/basic/htmlcov/z_3ec3b3f490dc0950_instrumentation_py.html +0 -1535
- golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db___init___py.html +0 -98
- golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_branding_py.html +0 -289
- golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_main_py.html +0 -476
- golf/examples/basic/htmlcov/z_5a6c4e6bcc86fb2f___init___py.html +0 -97
- golf/examples/basic/htmlcov/z_6cadab9ec0df475d___init___py.html +0 -102
- golf/examples/basic/htmlcov/z_6cadab9ec0df475d_build_py.html +0 -178
- golf/examples/basic/htmlcov/z_6cadab9ec0df475d_init_py.html +0 -387
- golf/examples/basic/htmlcov/z_6cadab9ec0df475d_run_py.html +0 -222
- golf/examples/basic/htmlcov/z_6fcdee0582ba84e4___init___py.html +0 -106
- golf/examples/basic/htmlcov/z_6fcdee0582ba84e4__endpoints_fallback_py.html +0 -107
- golf/examples/basic/htmlcov/z_7ba499ed22986217___init___py.html +0 -98
- golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_auth_py.html +0 -306
- golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_metrics_py.html +0 -329
- golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_py.html +0 -1471
- golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_telemetry_py.html +0 -186
- golf/examples/basic/htmlcov/z_7ba499ed22986217_config_py.html +0 -315
- golf/examples/basic/htmlcov/z_7ba499ed22986217_parser_py.html +0 -1149
- golf/examples/basic/htmlcov/z_7ba499ed22986217_platform_py.html +0 -279
- golf/examples/basic/htmlcov/z_7ba499ed22986217_telemetry_py.html +0 -589
- golf/examples/basic/htmlcov/z_7ba499ed22986217_transformer_py.html +0 -286
- golf/examples/basic/htmlcov/z_7d7da37693a43688___init___py.html +0 -107
- golf/examples/basic/htmlcov/z_7d7da37693a43688_collector_py.html +0 -417
- golf/examples/basic/htmlcov/z_7d7da37693a43688_registry_py.html +0 -109
- golf/examples/basic/htmlcov/z_abe733142b40ad4e___init___py.html +0 -109
- golf/examples/basic/htmlcov/z_abe733142b40ad4e_context_py.html +0 -150
- golf/examples/basic/htmlcov/z_abe733142b40ad4e_elicitation_py.html +0 -267
- golf/examples/basic/htmlcov/z_abe733142b40ad4e_sampling_py.html +0 -318
- golf/examples/basic/prompts/__pycache__/welcome.cpython-311.pyc +0 -0
- golf/examples/basic/resources/__pycache__/current_time.cpython-311.pyc +0 -0
- golf/examples/basic/resources/__pycache__/info.cpython-311.pyc +0 -0
- golf/examples/basic/resources/weather/__pycache__/common.cpython-311.pyc +0 -0
- golf/examples/basic/resources/weather/__pycache__/current.cpython-311.pyc +0 -0
- golf/examples/basic/resources/weather/__pycache__/forecast.cpython-311.pyc +0 -0
- golf/examples/basic/tools/__pycache__/calculator.cpython-311.pyc +0 -0
- golf/examples/basic/tools/say/__pycache__/hello.cpython-311.pyc +0 -0
- golf_mcp-0.2.2.dist-info/RECORD +0 -110
- {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/WHEEL +0 -0
- {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/entry_points.txt +0 -0
- {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/licenses/LICENSE +0 -0
- {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/top_level.txt +0 -0
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
5
|
-
<title>Coverage for /Users/antonigmitruk/golf/src/golf/core/config.py: 0%</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="pyfile">
|
|
11
|
-
<header>
|
|
12
|
-
<div class="content">
|
|
13
|
-
<h1>
|
|
14
|
-
<span class="text">Coverage for </span><b>/Users/antonigmitruk/golf/src/golf/core/config.py</b>:
|
|
15
|
-
<span class="pc_cov">0%</span>
|
|
16
|
-
</h1>
|
|
17
|
-
<aside id="help_panel_wrapper">
|
|
18
|
-
<input id="help_panel_state" type="checkbox">
|
|
19
|
-
<label for="help_panel_state">
|
|
20
|
-
<img id="keyboard_icon" src="keybd_closed_cb_ce680311.png" alt="Show/hide keyboard shortcuts">
|
|
21
|
-
</label>
|
|
22
|
-
<div id="help_panel">
|
|
23
|
-
<p class="legend">Shortcuts on this page</p>
|
|
24
|
-
<div class="keyhelp">
|
|
25
|
-
<p>
|
|
26
|
-
<kbd>r</kbd>
|
|
27
|
-
<kbd>m</kbd>
|
|
28
|
-
<kbd>x</kbd>
|
|
29
|
-
toggle line displays
|
|
30
|
-
</p>
|
|
31
|
-
<p>
|
|
32
|
-
<kbd>j</kbd>
|
|
33
|
-
<kbd>k</kbd>
|
|
34
|
-
next/prev highlighted chunk
|
|
35
|
-
</p>
|
|
36
|
-
<p>
|
|
37
|
-
<kbd>0</kbd> (zero) top of page
|
|
38
|
-
</p>
|
|
39
|
-
<p>
|
|
40
|
-
<kbd>1</kbd> (one) first highlighted chunk
|
|
41
|
-
</p>
|
|
42
|
-
<p>
|
|
43
|
-
<kbd>[</kbd>
|
|
44
|
-
<kbd>]</kbd>
|
|
45
|
-
prev/next file
|
|
46
|
-
</p>
|
|
47
|
-
<p>
|
|
48
|
-
<kbd>u</kbd> up to the index
|
|
49
|
-
</p>
|
|
50
|
-
<p>
|
|
51
|
-
<kbd>?</kbd> show/hide this help
|
|
52
|
-
</p>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
</aside>
|
|
56
|
-
<h2>
|
|
57
|
-
<span class="text">96 statements </span>
|
|
58
|
-
<button type="button" class="run button_toggle_run" value="run" data-shortcut="r" title="Toggle lines run">0<span class="text"> run</span></button>
|
|
59
|
-
<button type="button" class="mis show_mis button_toggle_mis" value="mis" data-shortcut="m" title="Toggle lines missing">96<span class="text"> missing</span></button>
|
|
60
|
-
<button type="button" class="exc show_exc button_toggle_exc" value="exc" data-shortcut="x" title="Toggle lines excluded">0<span class="text"> excluded</span></button>
|
|
61
|
-
</h2>
|
|
62
|
-
<p class="text">
|
|
63
|
-
<a id="prevFileLink" class="nav" href="z_7ba499ed22986217_builder_telemetry_py.html">« prev</a>
|
|
64
|
-
<a id="indexLink" class="nav" href="index.html">^ index</a>
|
|
65
|
-
<a id="nextFileLink" class="nav" href="z_7ba499ed22986217_parser_py.html">» next</a>
|
|
66
|
-
|
|
67
|
-
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
|
|
68
|
-
created at 2025-08-16 18:46 +0200
|
|
69
|
-
</p>
|
|
70
|
-
<aside class="hidden">
|
|
71
|
-
<button type="button" class="button_next_chunk" data-shortcut="j"></button>
|
|
72
|
-
<button type="button" class="button_prev_chunk" data-shortcut="k"></button>
|
|
73
|
-
<button type="button" class="button_top_of_page" data-shortcut="0"></button>
|
|
74
|
-
<button type="button" class="button_first_chunk" data-shortcut="1"></button>
|
|
75
|
-
<button type="button" class="button_prev_file" data-shortcut="["></button>
|
|
76
|
-
<button type="button" class="button_next_file" data-shortcut="]"></button>
|
|
77
|
-
<button type="button" class="button_to_index" data-shortcut="u"></button>
|
|
78
|
-
<button type="button" class="button_show_hide_help" data-shortcut="?"></button>
|
|
79
|
-
</aside>
|
|
80
|
-
</div>
|
|
81
|
-
</header>
|
|
82
|
-
<main id="source">
|
|
83
|
-
<p class="pln"><span class="n"><a id="t1" href="#t1">1</a></span><span class="t"><span class="str">"""Configuration management for GolfMCP."""</span> </span><span class="r"></span></p>
|
|
84
|
-
<p class="pln"><span class="n"><a id="t2" href="#t2">2</a></span><span class="t"> </span><span class="r"></span></p>
|
|
85
|
-
<p class="mis show_mis"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">pathlib</span> <span class="key">import</span> <span class="nam">Path</span> </span><span class="r"></span></p>
|
|
86
|
-
<p class="mis show_mis"><span class="n"><a id="t4" href="#t4">4</a></span><span class="t"><span class="key">from</span> <span class="nam">typing</span> <span class="key">import</span> <span class="nam">Any</span> </span><span class="r"></span></p>
|
|
87
|
-
<p class="pln"><span class="n"><a id="t5" href="#t5">5</a></span><span class="t"> </span><span class="r"></span></p>
|
|
88
|
-
<p class="mis show_mis"><span class="n"><a id="t6" href="#t6">6</a></span><span class="t"><span class="key">from</span> <span class="nam">pydantic</span> <span class="key">import</span> <span class="nam">BaseModel</span><span class="op">,</span> <span class="nam">Field</span><span class="op">,</span> <span class="nam">field_validator</span> </span><span class="r"></span></p>
|
|
89
|
-
<p class="mis show_mis"><span class="n"><a id="t7" href="#t7">7</a></span><span class="t"><span class="key">from</span> <span class="nam">pydantic_settings</span> <span class="key">import</span> <span class="nam">BaseSettings</span><span class="op">,</span> <span class="nam">SettingsConfigDict</span> </span><span class="r"></span></p>
|
|
90
|
-
<p class="mis show_mis"><span class="n"><a id="t8" href="#t8">8</a></span><span class="t"><span class="key">from</span> <span class="nam">rich</span><span class="op">.</span><span class="nam">console</span> <span class="key">import</span> <span class="nam">Console</span> </span><span class="r"></span></p>
|
|
91
|
-
<p class="pln"><span class="n"><a id="t9" href="#t9">9</a></span><span class="t"> </span><span class="r"></span></p>
|
|
92
|
-
<p class="mis show_mis"><span class="n"><a id="t10" href="#t10">10</a></span><span class="t"><span class="nam">console</span> <span class="op">=</span> <span class="nam">Console</span><span class="op">(</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
93
|
-
<p class="pln"><span class="n"><a id="t11" href="#t11">11</a></span><span class="t"> </span><span class="r"></span></p>
|
|
94
|
-
<p class="pln"><span class="n"><a id="t12" href="#t12">12</a></span><span class="t"> </span><span class="r"></span></p>
|
|
95
|
-
<p class="mis show_mis"><span class="n"><a id="t13" href="#t13">13</a></span><span class="t"><span class="key">class</span> <span class="nam">AuthConfig</span><span class="op">(</span><span class="nam">BaseModel</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
96
|
-
<p class="pln"><span class="n"><a id="t14" href="#t14">14</a></span><span class="t"> <span class="str">"""Authentication configuration."""</span> </span><span class="r"></span></p>
|
|
97
|
-
<p class="pln"><span class="n"><a id="t15" href="#t15">15</a></span><span class="t"> </span><span class="r"></span></p>
|
|
98
|
-
<p class="mis show_mis"><span class="n"><a id="t16" href="#t16">16</a></span><span class="t"> <span class="nam">provider</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="op">...</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Authentication provider (e.g., 'jwks', 'google', 'github')"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
99
|
-
<p class="mis show_mis"><span class="n"><a id="t17" href="#t17">17</a></span><span class="t"> <span class="nam">scopes</span><span class="op">:</span> <span class="nam">list</span><span class="op">[</span><span class="nam">str</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="nam">default_factory</span><span class="op">=</span><span class="nam">list</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Required OAuth scopes"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
100
|
-
<p class="mis show_mis"><span class="n"><a id="t18" href="#t18">18</a></span><span class="t"> <span class="nam">client_id_env</span><span class="op">:</span> <span class="nam">str</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Environment variable name for client ID"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
101
|
-
<p class="mis show_mis"><span class="n"><a id="t19" href="#t19">19</a></span><span class="t"> <span class="nam">client_secret_env</span><span class="op">:</span> <span class="nam">str</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Environment variable name for client secret"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
102
|
-
<p class="mis show_mis"><span class="n"><a id="t20" href="#t20">20</a></span><span class="t"> <span class="nam">redirect_uri</span><span class="op">:</span> <span class="nam">str</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"OAuth redirect URI (defaults to localhost callback)"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
103
|
-
<p class="pln"><span class="n"><a id="t21" href="#t21">21</a></span><span class="t"> </span><span class="r"></span></p>
|
|
104
|
-
<p class="mis show_mis"><span class="n"><a id="t22" href="#t22">22</a></span><span class="t"> <span class="op">@</span><span class="nam">field_validator</span><span class="op">(</span><span class="str">"provider"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
105
|
-
<p class="mis show_mis"><span class="n"><a id="t23" href="#t23">23</a></span><span class="t"> <span class="op">@</span><span class="nam">classmethod</span> </span><span class="r"></span></p>
|
|
106
|
-
<p class="mis show_mis"><span class="n"><a id="t24" href="#t24">24</a></span><span class="t"> <span class="key">def</span> <span class="nam">validate_provider</span><span class="op">(</span><span class="nam">cls</span><span class="op">,</span> <span class="nam">value</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="nam">str</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
107
|
-
<p class="pln"><span class="n"><a id="t25" href="#t25">25</a></span><span class="t"> <span class="str">"""Validate the provider value."""</span> </span><span class="r"></span></p>
|
|
108
|
-
<p class="mis show_mis"><span class="n"><a id="t26" href="#t26">26</a></span><span class="t"> <span class="nam">valid_providers</span> <span class="op">=</span> <span class="op">{</span><span class="str">"jwks"</span><span class="op">,</span> <span class="str">"google"</span><span class="op">,</span> <span class="str">"github"</span><span class="op">,</span> <span class="str">"custom"</span><span class="op">}</span> </span><span class="r"></span></p>
|
|
109
|
-
<p class="mis show_mis"><span class="n"><a id="t27" href="#t27">27</a></span><span class="t"> <span class="key">if</span> <span class="nam">value</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">valid_providers</span> <span class="key">and</span> <span class="key">not</span> <span class="nam">value</span><span class="op">.</span><span class="nam">startswith</span><span class="op">(</span><span class="str">"custom:"</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
110
|
-
<p class="mis show_mis"><span class="n"><a id="t28" href="#t28">28</a></span><span class="t"> <span class="key">raise</span> <span class="nam">ValueError</span><span class="op">(</span><span class="str">f"Invalid provider '{value}'. Must be one of {valid_providers} or start with 'custom:'"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
111
|
-
<p class="mis show_mis"><span class="n"><a id="t29" href="#t29">29</a></span><span class="t"> <span class="key">return</span> <span class="nam">value</span> </span><span class="r"></span></p>
|
|
112
|
-
<p class="pln"><span class="n"><a id="t30" href="#t30">30</a></span><span class="t"> </span><span class="r"></span></p>
|
|
113
|
-
<p class="pln"><span class="n"><a id="t31" href="#t31">31</a></span><span class="t"> </span><span class="r"></span></p>
|
|
114
|
-
<p class="mis show_mis"><span class="n"><a id="t32" href="#t32">32</a></span><span class="t"><span class="key">class</span> <span class="nam">DeployConfig</span><span class="op">(</span><span class="nam">BaseModel</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
115
|
-
<p class="pln"><span class="n"><a id="t33" href="#t33">33</a></span><span class="t"> <span class="str">"""Deployment configuration."""</span> </span><span class="r"></span></p>
|
|
116
|
-
<p class="pln"><span class="n"><a id="t34" href="#t34">34</a></span><span class="t"> </span><span class="r"></span></p>
|
|
117
|
-
<p class="mis show_mis"><span class="n"><a id="t35" href="#t35">35</a></span><span class="t"> <span class="nam">default</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"vercel"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Default deployment target"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
118
|
-
<p class="mis show_mis"><span class="n"><a id="t36" href="#t36">36</a></span><span class="t"> <span class="nam">options</span><span class="op">:</span> <span class="nam">dict</span><span class="op">[</span><span class="nam">str</span><span class="op">,</span> <span class="nam">Any</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="nam">default_factory</span><span class="op">=</span><span class="nam">dict</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Target-specific options"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
119
|
-
<p class="pln"><span class="n"><a id="t37" href="#t37">37</a></span><span class="t"> </span><span class="r"></span></p>
|
|
120
|
-
<p class="pln"><span class="n"><a id="t38" href="#t38">38</a></span><span class="t"> </span><span class="r"></span></p>
|
|
121
|
-
<p class="mis show_mis"><span class="n"><a id="t39" href="#t39">39</a></span><span class="t"><span class="key">class</span> <span class="nam">Settings</span><span class="op">(</span><span class="nam">BaseSettings</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
122
|
-
<p class="pln"><span class="n"><a id="t40" href="#t40">40</a></span><span class="t"> <span class="str">"""GolfMCP application settings."""</span> </span><span class="r"></span></p>
|
|
123
|
-
<p class="pln"><span class="n"><a id="t41" href="#t41">41</a></span><span class="t"> </span><span class="r"></span></p>
|
|
124
|
-
<p class="mis show_mis"><span class="n"><a id="t42" href="#t42">42</a></span><span class="t"> <span class="nam">model_config</span> <span class="op">=</span> <span class="nam">SettingsConfigDict</span><span class="op">(</span> </span><span class="r"></span></p>
|
|
125
|
-
<p class="pln"><span class="n"><a id="t43" href="#t43">43</a></span><span class="t"> <span class="nam">env_prefix</span><span class="op">=</span><span class="str">"GOLF_"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
126
|
-
<p class="pln"><span class="n"><a id="t44" href="#t44">44</a></span><span class="t"> <span class="nam">env_file</span><span class="op">=</span><span class="str">".env"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
127
|
-
<p class="pln"><span class="n"><a id="t45" href="#t45">45</a></span><span class="t"> <span class="nam">env_file_encoding</span><span class="op">=</span><span class="str">"utf-8"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
128
|
-
<p class="pln"><span class="n"><a id="t46" href="#t46">46</a></span><span class="t"> <span class="nam">extra</span><span class="op">=</span><span class="str">"ignore"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
129
|
-
<p class="pln"><span class="n"><a id="t47" href="#t47">47</a></span><span class="t"> <span class="op">)</span> </span><span class="r"></span></p>
|
|
130
|
-
<p class="pln"><span class="n"><a id="t48" href="#t48">48</a></span><span class="t"> </span><span class="r"></span></p>
|
|
131
|
-
<p class="pln"><span class="n"><a id="t49" href="#t49">49</a></span><span class="t"> <span class="com"># Project metadata</span> </span><span class="r"></span></p>
|
|
132
|
-
<p class="mis show_mis"><span class="n"><a id="t50" href="#t50">50</a></span><span class="t"> <span class="nam">name</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"GolfMCP Project"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"FastMCP instance name"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
133
|
-
<p class="mis show_mis"><span class="n"><a id="t51" href="#t51">51</a></span><span class="t"> <span class="nam">description</span><span class="op">:</span> <span class="nam">str</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Project description"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
134
|
-
<p class="pln"><span class="n"><a id="t52" href="#t52">52</a></span><span class="t"> </span><span class="r"></span></p>
|
|
135
|
-
<p class="pln"><span class="n"><a id="t53" href="#t53">53</a></span><span class="t"> <span class="com"># Build settings</span> </span><span class="r"></span></p>
|
|
136
|
-
<p class="mis show_mis"><span class="n"><a id="t54" href="#t54">54</a></span><span class="t"> <span class="nam">output_dir</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"dist"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Build artifact folder"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
137
|
-
<p class="pln"><span class="n"><a id="t55" href="#t55">55</a></span><span class="t"> </span><span class="r"></span></p>
|
|
138
|
-
<p class="pln"><span class="n"><a id="t56" href="#t56">56</a></span><span class="t"> <span class="com"># Server settings</span> </span><span class="r"></span></p>
|
|
139
|
-
<p class="mis show_mis"><span class="n"><a id="t57" href="#t57">57</a></span><span class="t"> <span class="nam">host</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"localhost"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Server host"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
140
|
-
<p class="mis show_mis"><span class="n"><a id="t58" href="#t58">58</a></span><span class="t"> <span class="nam">port</span><span class="op">:</span> <span class="nam">int</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="num">3000</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Server port"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
141
|
-
<p class="mis show_mis"><span class="n"><a id="t59" href="#t59">59</a></span><span class="t"> <span class="nam">transport</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span> </span><span class="r"></span></p>
|
|
142
|
-
<p class="pln"><span class="n"><a id="t60" href="#t60">60</a></span><span class="t"> <span class="str">"streamable-http"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
143
|
-
<p class="pln"><span class="n"><a id="t61" href="#t61">61</a></span><span class="t"> <span class="nam">description</span><span class="op">=</span><span class="str">"Transport protocol (streamable-http, sse, stdio)"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
144
|
-
<p class="pln"><span class="n"><a id="t62" href="#t62">62</a></span><span class="t"> <span class="op">)</span> </span><span class="r"></span></p>
|
|
145
|
-
<p class="pln"><span class="n"><a id="t63" href="#t63">63</a></span><span class="t"> </span><span class="r"></span></p>
|
|
146
|
-
<p class="pln"><span class="n"><a id="t64" href="#t64">64</a></span><span class="t"> <span class="com"># Auth settings</span> </span><span class="r"></span></p>
|
|
147
|
-
<p class="mis show_mis"><span class="n"><a id="t65" href="#t65">65</a></span><span class="t"> <span class="nam">auth</span><span class="op">:</span> <span class="nam">str</span> <span class="op">|</span> <span class="nam">AuthConfig</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">None</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Authentication configuration or URI"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
148
|
-
<p class="pln"><span class="n"><a id="t66" href="#t66">66</a></span><span class="t"> </span><span class="r"></span></p>
|
|
149
|
-
<p class="pln"><span class="n"><a id="t67" href="#t67">67</a></span><span class="t"> <span class="com"># Deploy settings</span> </span><span class="r"></span></p>
|
|
150
|
-
<p class="mis show_mis"><span class="n"><a id="t68" href="#t68">68</a></span><span class="t"> <span class="nam">deploy</span><span class="op">:</span> <span class="nam">DeployConfig</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="nam">default_factory</span><span class="op">=</span><span class="nam">DeployConfig</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Deployment configuration"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
151
|
-
<p class="pln"><span class="n"><a id="t69" href="#t69">69</a></span><span class="t"> </span><span class="r"></span></p>
|
|
152
|
-
<p class="pln"><span class="n"><a id="t70" href="#t70">70</a></span><span class="t"> <span class="com"># Feature flags</span> </span><span class="r"></span></p>
|
|
153
|
-
<p class="mis show_mis"><span class="n"><a id="t71" href="#t71">71</a></span><span class="t"> <span class="nam">telemetry</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">True</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Enable anonymous telemetry"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
154
|
-
<p class="pln"><span class="n"><a id="t72" href="#t72">72</a></span><span class="t"> </span><span class="r"></span></p>
|
|
155
|
-
<p class="pln"><span class="n"><a id="t73" href="#t73">73</a></span><span class="t"> <span class="com"># Project paths</span> </span><span class="r"></span></p>
|
|
156
|
-
<p class="mis show_mis"><span class="n"><a id="t74" href="#t74">74</a></span><span class="t"> <span class="nam">tools_dir</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"tools"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Directory containing tools"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
157
|
-
<p class="mis show_mis"><span class="n"><a id="t75" href="#t75">75</a></span><span class="t"> <span class="nam">resources_dir</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"resources"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Directory containing resources"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
158
|
-
<p class="mis show_mis"><span class="n"><a id="t76" href="#t76">76</a></span><span class="t"> <span class="nam">prompts_dir</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"prompts"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Directory containing prompts"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
159
|
-
<p class="pln"><span class="n"><a id="t77" href="#t77">77</a></span><span class="t"> </span><span class="r"></span></p>
|
|
160
|
-
<p class="pln"><span class="n"><a id="t78" href="#t78">78</a></span><span class="t"> <span class="com"># OpenTelemetry config</span> </span><span class="r"></span></p>
|
|
161
|
-
<p class="mis show_mis"><span class="n"><a id="t79" href="#t79">79</a></span><span class="t"> <span class="nam">opentelemetry_enabled</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">False</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Enable OpenTelemetry tracing"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
162
|
-
<p class="mis show_mis"><span class="n"><a id="t80" href="#t80">80</a></span><span class="t"> <span class="nam">opentelemetry_default_exporter</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"console"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Default OpenTelemetry exporter type"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
163
|
-
<p class="mis show_mis"><span class="n"><a id="t81" href="#t81">81</a></span><span class="t"> <span class="nam">detailed_tracing</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span> </span><span class="r"></span></p>
|
|
164
|
-
<p class="pln"><span class="n"><a id="t82" href="#t82">82</a></span><span class="t"> <span class="key">False</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Enable detailed tracing with input/output capture (may contain sensitive data)"</span> </span><span class="r"></span></p>
|
|
165
|
-
<p class="pln"><span class="n"><a id="t83" href="#t83">83</a></span><span class="t"> <span class="op">)</span> </span><span class="r"></span></p>
|
|
166
|
-
<p class="pln"><span class="n"><a id="t84" href="#t84">84</a></span><span class="t"> </span><span class="r"></span></p>
|
|
167
|
-
<p class="pln"><span class="n"><a id="t85" href="#t85">85</a></span><span class="t"> <span class="com"># Health check configuration</span> </span><span class="r"></span></p>
|
|
168
|
-
<p class="mis show_mis"><span class="n"><a id="t86" href="#t86">86</a></span><span class="t"> <span class="nam">health_check_enabled</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">False</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Enable health check endpoint"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
169
|
-
<p class="mis show_mis"><span class="n"><a id="t87" href="#t87">87</a></span><span class="t"> <span class="nam">health_check_path</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"/health"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Health check endpoint path"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
170
|
-
<p class="mis show_mis"><span class="n"><a id="t88" href="#t88">88</a></span><span class="t"> <span class="nam">health_check_response</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"OK"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Health check response text"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
171
|
-
<p class="pln"><span class="n"><a id="t89" href="#t89">89</a></span><span class="t"> </span><span class="r"></span></p>
|
|
172
|
-
<p class="pln"><span class="n"><a id="t90" href="#t90">90</a></span><span class="t"> <span class="com"># HTTP session behaviour</span> </span><span class="r"></span></p>
|
|
173
|
-
<p class="mis show_mis"><span class="n"><a id="t91" href="#t91">91</a></span><span class="t"> <span class="nam">stateless_http</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span> </span><span class="r"></span></p>
|
|
174
|
-
<p class="pln"><span class="n"><a id="t92" href="#t92">92</a></span><span class="t"> <span class="key">False</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
175
|
-
<p class="pln"><span class="n"><a id="t93" href="#t93">93</a></span><span class="t"> <span class="nam">description</span><span class="op">=</span><span class="str">"Make Streamable-HTTP transport stateless (new session per request)"</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
176
|
-
<p class="pln"><span class="n"><a id="t94" href="#t94">94</a></span><span class="t"> <span class="op">)</span> </span><span class="r"></span></p>
|
|
177
|
-
<p class="pln"><span class="n"><a id="t95" href="#t95">95</a></span><span class="t"> </span><span class="r"></span></p>
|
|
178
|
-
<p class="pln"><span class="n"><a id="t96" href="#t96">96</a></span><span class="t"> <span class="com"># Metrics configuration</span> </span><span class="r"></span></p>
|
|
179
|
-
<p class="mis show_mis"><span class="n"><a id="t97" href="#t97">97</a></span><span class="t"> <span class="nam">metrics_enabled</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="key">False</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Enable Prometheus metrics endpoint"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
180
|
-
<p class="mis show_mis"><span class="n"><a id="t98" href="#t98">98</a></span><span class="t"> <span class="nam">metrics_path</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</span><span class="op">(</span><span class="str">"/metrics"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Metrics endpoint path"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
181
|
-
<p class="pln"><span class="n"><a id="t99" href="#t99">99</a></span><span class="t"> </span><span class="r"></span></p>
|
|
182
|
-
<p class="pln"><span class="n"><a id="t100" href="#t100">100</a></span><span class="t"> </span><span class="r"></span></p>
|
|
183
|
-
<p class="mis show_mis"><span class="n"><a id="t101" href="#t101">101</a></span><span class="t"><span class="key">def</span> <span class="nam">find_config_path</span><span class="op">(</span><span class="nam">start_path</span><span class="op">:</span> <span class="nam">Path</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">)</span> <span class="op">-></span> <span class="nam">Path</span> <span class="op">|</span> <span class="key">None</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
184
|
-
<p class="pln"><span class="n"><a id="t102" href="#t102">102</a></span><span class="t"> <span class="str">"""Find the golf config file by searching upwards from the given path.</span> </span><span class="r"></span></p>
|
|
185
|
-
<p class="pln"><span class="n"><a id="t103" href="#t103">103</a></span><span class="t"> </span><span class="r"></span></p>
|
|
186
|
-
<p class="pln"><span class="n"><a id="t104" href="#t104">104</a></span><span class="t"><span class="str"> Args:</span> </span><span class="r"></span></p>
|
|
187
|
-
<p class="pln"><span class="n"><a id="t105" href="#t105">105</a></span><span class="t"><span class="str"> start_path: Path to start searching from (defaults to current directory)</span> </span><span class="r"></span></p>
|
|
188
|
-
<p class="pln"><span class="n"><a id="t106" href="#t106">106</a></span><span class="t"> </span><span class="r"></span></p>
|
|
189
|
-
<p class="pln"><span class="n"><a id="t107" href="#t107">107</a></span><span class="t"><span class="str"> Returns:</span> </span><span class="r"></span></p>
|
|
190
|
-
<p class="pln"><span class="n"><a id="t108" href="#t108">108</a></span><span class="t"><span class="str"> Path to the config file if found, None otherwise</span> </span><span class="r"></span></p>
|
|
191
|
-
<p class="pln"><span class="n"><a id="t109" href="#t109">109</a></span><span class="t"><span class="str"> """</span> </span><span class="r"></span></p>
|
|
192
|
-
<p class="mis show_mis"><span class="n"><a id="t110" href="#t110">110</a></span><span class="t"> <span class="key">if</span> <span class="nam">start_path</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
193
|
-
<p class="mis show_mis"><span class="n"><a id="t111" href="#t111">111</a></span><span class="t"> <span class="nam">start_path</span> <span class="op">=</span> <span class="nam">Path</span><span class="op">.</span><span class="nam">cwd</span><span class="op">(</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
194
|
-
<p class="pln"><span class="n"><a id="t112" href="#t112">112</a></span><span class="t"> </span><span class="r"></span></p>
|
|
195
|
-
<p class="mis show_mis"><span class="n"><a id="t113" href="#t113">113</a></span><span class="t"> <span class="nam">current</span> <span class="op">=</span> <span class="nam">start_path</span><span class="op">.</span><span class="nam">absolute</span><span class="op">(</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
196
|
-
<p class="pln"><span class="n"><a id="t114" href="#t114">114</a></span><span class="t"> </span><span class="r"></span></p>
|
|
197
|
-
<p class="pln"><span class="n"><a id="t115" href="#t115">115</a></span><span class="t"> <span class="com"># Don't search above the home directory</span> </span><span class="r"></span></p>
|
|
198
|
-
<p class="mis show_mis"><span class="n"><a id="t116" href="#t116">116</a></span><span class="t"> <span class="nam">home</span> <span class="op">=</span> <span class="nam">Path</span><span class="op">.</span><span class="nam">home</span><span class="op">(</span><span class="op">)</span><span class="op">.</span><span class="nam">absolute</span><span class="op">(</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
199
|
-
<p class="pln"><span class="n"><a id="t117" href="#t117">117</a></span><span class="t"> </span><span class="r"></span></p>
|
|
200
|
-
<p class="mis show_mis"><span class="n"><a id="t118" href="#t118">118</a></span><span class="t"> <span class="key">while</span> <span class="nam">current</span> <span class="op">!=</span> <span class="nam">current</span><span class="op">.</span><span class="nam">parent</span> <span class="key">and</span> <span class="nam">current</span> <span class="op">!=</span> <span class="nam">home</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
201
|
-
<p class="pln"><span class="n"><a id="t119" href="#t119">119</a></span><span class="t"> <span class="com"># Check for JSON config first (preferred)</span> </span><span class="r"></span></p>
|
|
202
|
-
<p class="mis show_mis"><span class="n"><a id="t120" href="#t120">120</a></span><span class="t"> <span class="nam">json_config</span> <span class="op">=</span> <span class="nam">current</span> <span class="op">/</span> <span class="str">"golf.json"</span> </span><span class="r"></span></p>
|
|
203
|
-
<p class="mis show_mis"><span class="n"><a id="t121" href="#t121">121</a></span><span class="t"> <span class="key">if</span> <span class="nam">json_config</span><span class="op">.</span><span class="nam">exists</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
204
|
-
<p class="mis show_mis"><span class="n"><a id="t122" href="#t122">122</a></span><span class="t"> <span class="key">return</span> <span class="nam">json_config</span> </span><span class="r"></span></p>
|
|
205
|
-
<p class="pln"><span class="n"><a id="t123" href="#t123">123</a></span><span class="t"> </span><span class="r"></span></p>
|
|
206
|
-
<p class="pln"><span class="n"><a id="t124" href="#t124">124</a></span><span class="t"> <span class="com"># Fall back to TOML config</span> </span><span class="r"></span></p>
|
|
207
|
-
<p class="mis show_mis"><span class="n"><a id="t125" href="#t125">125</a></span><span class="t"> <span class="nam">toml_config</span> <span class="op">=</span> <span class="nam">current</span> <span class="op">/</span> <span class="str">"golf.toml"</span> </span><span class="r"></span></p>
|
|
208
|
-
<p class="mis show_mis"><span class="n"><a id="t126" href="#t126">126</a></span><span class="t"> <span class="key">if</span> <span class="nam">toml_config</span><span class="op">.</span><span class="nam">exists</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
209
|
-
<p class="mis show_mis"><span class="n"><a id="t127" href="#t127">127</a></span><span class="t"> <span class="key">return</span> <span class="nam">toml_config</span> </span><span class="r"></span></p>
|
|
210
|
-
<p class="pln"><span class="n"><a id="t128" href="#t128">128</a></span><span class="t"> </span><span class="r"></span></p>
|
|
211
|
-
<p class="mis show_mis"><span class="n"><a id="t129" href="#t129">129</a></span><span class="t"> <span class="nam">current</span> <span class="op">=</span> <span class="nam">current</span><span class="op">.</span><span class="nam">parent</span> </span><span class="r"></span></p>
|
|
212
|
-
<p class="pln"><span class="n"><a id="t130" href="#t130">130</a></span><span class="t"> </span><span class="r"></span></p>
|
|
213
|
-
<p class="mis show_mis"><span class="n"><a id="t131" href="#t131">131</a></span><span class="t"> <span class="key">return</span> <span class="key">None</span> </span><span class="r"></span></p>
|
|
214
|
-
<p class="pln"><span class="n"><a id="t132" href="#t132">132</a></span><span class="t"> </span><span class="r"></span></p>
|
|
215
|
-
<p class="pln"><span class="n"><a id="t133" href="#t133">133</a></span><span class="t"> </span><span class="r"></span></p>
|
|
216
|
-
<p class="mis show_mis"><span class="n"><a id="t134" href="#t134">134</a></span><span class="t"><span class="key">def</span> <span class="nam">find_project_root</span><span class="op">(</span> </span><span class="r"></span></p>
|
|
217
|
-
<p class="pln"><span class="n"><a id="t135" href="#t135">135</a></span><span class="t"> <span class="nam">start_path</span><span class="op">:</span> <span class="nam">Path</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">,</span> </span><span class="r"></span></p>
|
|
218
|
-
<p class="pln"><span class="n"><a id="t136" href="#t136">136</a></span><span class="t"><span class="op">)</span> <span class="op">-></span> <span class="nam">tuple</span><span class="op">[</span><span class="nam">Path</span> <span class="op">|</span> <span class="key">None</span><span class="op">,</span> <span class="nam">Path</span> <span class="op">|</span> <span class="key">None</span><span class="op">]</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
219
|
-
<p class="pln"><span class="n"><a id="t137" href="#t137">137</a></span><span class="t"> <span class="str">"""Find a GolfMCP project root by searching for a config file.</span> </span><span class="r"></span></p>
|
|
220
|
-
<p class="pln"><span class="n"><a id="t138" href="#t138">138</a></span><span class="t"> </span><span class="r"></span></p>
|
|
221
|
-
<p class="pln"><span class="n"><a id="t139" href="#t139">139</a></span><span class="t"><span class="str"> This is the central project discovery function that should be used by all commands.</span> </span><span class="r"></span></p>
|
|
222
|
-
<p class="pln"><span class="n"><a id="t140" href="#t140">140</a></span><span class="t"> </span><span class="r"></span></p>
|
|
223
|
-
<p class="pln"><span class="n"><a id="t141" href="#t141">141</a></span><span class="t"><span class="str"> Args:</span> </span><span class="r"></span></p>
|
|
224
|
-
<p class="pln"><span class="n"><a id="t142" href="#t142">142</a></span><span class="t"><span class="str"> start_path: Path to start searching from (defaults to current directory)</span> </span><span class="r"></span></p>
|
|
225
|
-
<p class="pln"><span class="n"><a id="t143" href="#t143">143</a></span><span class="t"> </span><span class="r"></span></p>
|
|
226
|
-
<p class="pln"><span class="n"><a id="t144" href="#t144">144</a></span><span class="t"><span class="str"> Returns:</span> </span><span class="r"></span></p>
|
|
227
|
-
<p class="pln"><span class="n"><a id="t145" href="#t145">145</a></span><span class="t"><span class="str"> Tuple of (project_root, config_path) if a project is found, or</span> </span><span class="r"></span></p>
|
|
228
|
-
<p class="pln"><span class="n"><a id="t146" href="#t146">146</a></span><span class="t"><span class="str"> (None, None) if not</span> </span><span class="r"></span></p>
|
|
229
|
-
<p class="pln"><span class="n"><a id="t147" href="#t147">147</a></span><span class="t"><span class="str"> """</span> </span><span class="r"></span></p>
|
|
230
|
-
<p class="mis show_mis"><span class="n"><a id="t148" href="#t148">148</a></span><span class="t"> <span class="nam">config_path</span> <span class="op">=</span> <span class="nam">find_config_path</span><span class="op">(</span><span class="nam">start_path</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
231
|
-
<p class="mis show_mis"><span class="n"><a id="t149" href="#t149">149</a></span><span class="t"> <span class="key">if</span> <span class="nam">config_path</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
232
|
-
<p class="mis show_mis"><span class="n"><a id="t150" href="#t150">150</a></span><span class="t"> <span class="key">return</span> <span class="nam">config_path</span><span class="op">.</span><span class="nam">parent</span><span class="op">,</span> <span class="nam">config_path</span> </span><span class="r"></span></p>
|
|
233
|
-
<p class="mis show_mis"><span class="n"><a id="t151" href="#t151">151</a></span><span class="t"> <span class="key">return</span> <span class="key">None</span><span class="op">,</span> <span class="key">None</span> </span><span class="r"></span></p>
|
|
234
|
-
<p class="pln"><span class="n"><a id="t152" href="#t152">152</a></span><span class="t"> </span><span class="r"></span></p>
|
|
235
|
-
<p class="pln"><span class="n"><a id="t153" href="#t153">153</a></span><span class="t"> </span><span class="r"></span></p>
|
|
236
|
-
<p class="mis show_mis"><span class="n"><a id="t154" href="#t154">154</a></span><span class="t"><span class="key">def</span> <span class="nam">load_settings</span><span class="op">(</span><span class="nam">project_path</span><span class="op">:</span> <span class="nam">str</span> <span class="op">|</span> <span class="nam">Path</span><span class="op">)</span> <span class="op">-></span> <span class="nam">Settings</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
237
|
-
<p class="pln"><span class="n"><a id="t155" href="#t155">155</a></span><span class="t"> <span class="str">"""Load settings from a project directory.</span> </span><span class="r"></span></p>
|
|
238
|
-
<p class="pln"><span class="n"><a id="t156" href="#t156">156</a></span><span class="t"> </span><span class="r"></span></p>
|
|
239
|
-
<p class="pln"><span class="n"><a id="t157" href="#t157">157</a></span><span class="t"><span class="str"> Args:</span> </span><span class="r"></span></p>
|
|
240
|
-
<p class="pln"><span class="n"><a id="t158" href="#t158">158</a></span><span class="t"><span class="str"> project_path: Path to the project directory</span> </span><span class="r"></span></p>
|
|
241
|
-
<p class="pln"><span class="n"><a id="t159" href="#t159">159</a></span><span class="t"> </span><span class="r"></span></p>
|
|
242
|
-
<p class="pln"><span class="n"><a id="t160" href="#t160">160</a></span><span class="t"><span class="str"> Returns:</span> </span><span class="r"></span></p>
|
|
243
|
-
<p class="pln"><span class="n"><a id="t161" href="#t161">161</a></span><span class="t"><span class="str"> Settings object with values loaded from config files</span> </span><span class="r"></span></p>
|
|
244
|
-
<p class="pln"><span class="n"><a id="t162" href="#t162">162</a></span><span class="t"><span class="str"> """</span> </span><span class="r"></span></p>
|
|
245
|
-
<p class="pln"><span class="n"><a id="t163" href="#t163">163</a></span><span class="t"> <span class="com"># Convert to Path if needed</span> </span><span class="r"></span></p>
|
|
246
|
-
<p class="mis show_mis"><span class="n"><a id="t164" href="#t164">164</a></span><span class="t"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">project_path</span><span class="op">,</span> <span class="nam">str</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
247
|
-
<p class="mis show_mis"><span class="n"><a id="t165" href="#t165">165</a></span><span class="t"> <span class="nam">project_path</span> <span class="op">=</span> <span class="nam">Path</span><span class="op">(</span><span class="nam">project_path</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
248
|
-
<p class="pln"><span class="n"><a id="t166" href="#t166">166</a></span><span class="t"> </span><span class="r"></span></p>
|
|
249
|
-
<p class="pln"><span class="n"><a id="t167" href="#t167">167</a></span><span class="t"> <span class="com"># Create default settings</span> </span><span class="r"></span></p>
|
|
250
|
-
<p class="mis show_mis"><span class="n"><a id="t168" href="#t168">168</a></span><span class="t"> <span class="nam">settings</span> <span class="op">=</span> <span class="nam">Settings</span><span class="op">(</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
251
|
-
<p class="pln"><span class="n"><a id="t169" href="#t169">169</a></span><span class="t"> </span><span class="r"></span></p>
|
|
252
|
-
<p class="pln"><span class="n"><a id="t170" href="#t170">170</a></span><span class="t"> <span class="com"># Check for .env file</span> </span><span class="r"></span></p>
|
|
253
|
-
<p class="mis show_mis"><span class="n"><a id="t171" href="#t171">171</a></span><span class="t"> <span class="nam">env_file</span> <span class="op">=</span> <span class="nam">project_path</span> <span class="op">/</span> <span class="str">".env"</span> </span><span class="r"></span></p>
|
|
254
|
-
<p class="mis show_mis"><span class="n"><a id="t172" href="#t172">172</a></span><span class="t"> <span class="key">if</span> <span class="nam">env_file</span><span class="op">.</span><span class="nam">exists</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
255
|
-
<p class="mis show_mis"><span class="n"><a id="t173" href="#t173">173</a></span><span class="t"> <span class="nam">settings</span> <span class="op">=</span> <span class="nam">Settings</span><span class="op">(</span><span class="nam">_env_file</span><span class="op">=</span><span class="nam">env_file</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
256
|
-
<p class="pln"><span class="n"><a id="t174" href="#t174">174</a></span><span class="t"> </span><span class="r"></span></p>
|
|
257
|
-
<p class="pln"><span class="n"><a id="t175" href="#t175">175</a></span><span class="t"> <span class="com"># Auto-enable OpenTelemetry if GOLF_API_KEY is present (from .env file)</span> </span><span class="r"></span></p>
|
|
258
|
-
<p class="mis show_mis"><span class="n"><a id="t176" href="#t176">176</a></span><span class="t"> <span class="key">import</span> <span class="nam">os</span> </span><span class="r"></span></p>
|
|
259
|
-
<p class="pln"><span class="n"><a id="t177" href="#t177">177</a></span><span class="t"> </span><span class="r"></span></p>
|
|
260
|
-
<p class="mis show_mis"><span class="n"><a id="t178" href="#t178">178</a></span><span class="t"> <span class="key">if</span> <span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">"GOLF_API_KEY"</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
261
|
-
<p class="mis show_mis"><span class="n"><a id="t179" href="#t179">179</a></span><span class="t"> <span class="nam">settings</span><span class="op">.</span><span class="nam">opentelemetry_enabled</span> <span class="op">=</span> <span class="key">True</span> </span><span class="r"></span></p>
|
|
262
|
-
<p class="pln"><span class="n"><a id="t180" href="#t180">180</a></span><span class="t"> </span><span class="r"></span></p>
|
|
263
|
-
<p class="pln"><span class="n"><a id="t181" href="#t181">181</a></span><span class="t"> <span class="com"># Try to load JSON config file first</span> </span><span class="r"></span></p>
|
|
264
|
-
<p class="mis show_mis"><span class="n"><a id="t182" href="#t182">182</a></span><span class="t"> <span class="nam">json_config_path</span> <span class="op">=</span> <span class="nam">project_path</span> <span class="op">/</span> <span class="str">"golf.json"</span> </span><span class="r"></span></p>
|
|
265
|
-
<p class="mis show_mis"><span class="n"><a id="t183" href="#t183">183</a></span><span class="t"> <span class="key">if</span> <span class="nam">json_config_path</span><span class="op">.</span><span class="nam">exists</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
266
|
-
<p class="mis show_mis"><span class="n"><a id="t184" href="#t184">184</a></span><span class="t"> <span class="key">return</span> <span class="nam">_load_json_settings</span><span class="op">(</span><span class="nam">json_config_path</span><span class="op">,</span> <span class="nam">settings</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
267
|
-
<p class="pln"><span class="n"><a id="t185" href="#t185">185</a></span><span class="t"> </span><span class="r"></span></p>
|
|
268
|
-
<p class="pln"><span class="n"><a id="t186" href="#t186">186</a></span><span class="t"> <span class="com"># No config file found, use defaults</span> </span><span class="r"></span></p>
|
|
269
|
-
<p class="pln"><span class="n"><a id="t187" href="#t187">187</a></span><span class="t"> <span class="com"># Auto-enable OpenTelemetry if GOLF_API_KEY is present</span> </span><span class="r"></span></p>
|
|
270
|
-
<p class="mis show_mis"><span class="n"><a id="t188" href="#t188">188</a></span><span class="t"> <span class="key">import</span> <span class="nam">os</span> </span><span class="r"></span></p>
|
|
271
|
-
<p class="pln"><span class="n"><a id="t189" href="#t189">189</a></span><span class="t"> </span><span class="r"></span></p>
|
|
272
|
-
<p class="mis show_mis"><span class="n"><a id="t190" href="#t190">190</a></span><span class="t"> <span class="key">if</span> <span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">"GOLF_API_KEY"</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
273
|
-
<p class="mis show_mis"><span class="n"><a id="t191" href="#t191">191</a></span><span class="t"> <span class="nam">settings</span><span class="op">.</span><span class="nam">opentelemetry_enabled</span> <span class="op">=</span> <span class="key">True</span> </span><span class="r"></span></p>
|
|
274
|
-
<p class="pln"><span class="n"><a id="t192" href="#t192">192</a></span><span class="t"> </span><span class="r"></span></p>
|
|
275
|
-
<p class="mis show_mis"><span class="n"><a id="t193" href="#t193">193</a></span><span class="t"> <span class="key">return</span> <span class="nam">settings</span> </span><span class="r"></span></p>
|
|
276
|
-
<p class="pln"><span class="n"><a id="t194" href="#t194">194</a></span><span class="t"> </span><span class="r"></span></p>
|
|
277
|
-
<p class="pln"><span class="n"><a id="t195" href="#t195">195</a></span><span class="t"> </span><span class="r"></span></p>
|
|
278
|
-
<p class="mis show_mis"><span class="n"><a id="t196" href="#t196">196</a></span><span class="t"><span class="key">def</span> <span class="nam">_load_json_settings</span><span class="op">(</span><span class="nam">path</span><span class="op">:</span> <span class="nam">Path</span><span class="op">,</span> <span class="nam">settings</span><span class="op">:</span> <span class="nam">Settings</span><span class="op">)</span> <span class="op">-></span> <span class="nam">Settings</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
279
|
-
<p class="pln"><span class="n"><a id="t197" href="#t197">197</a></span><span class="t"> <span class="str">"""Load settings from a JSON file."""</span> </span><span class="r"></span></p>
|
|
280
|
-
<p class="mis show_mis"><span class="n"><a id="t198" href="#t198">198</a></span><span class="t"> <span class="key">try</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
281
|
-
<p class="mis show_mis"><span class="n"><a id="t199" href="#t199">199</a></span><span class="t"> <span class="key">import</span> <span class="nam">json</span> </span><span class="r"></span></p>
|
|
282
|
-
<p class="pln"><span class="n"><a id="t200" href="#t200">200</a></span><span class="t"> </span><span class="r"></span></p>
|
|
283
|
-
<p class="mis show_mis"><span class="n"><a id="t201" href="#t201">201</a></span><span class="t"> <span class="key">with</span> <span class="nam">open</span><span class="op">(</span><span class="nam">path</span><span class="op">)</span> <span class="key">as</span> <span class="nam">f</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
284
|
-
<p class="mis show_mis"><span class="n"><a id="t202" href="#t202">202</a></span><span class="t"> <span class="nam">config_data</span> <span class="op">=</span> <span class="nam">json</span><span class="op">.</span><span class="nam">load</span><span class="op">(</span><span class="nam">f</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
285
|
-
<p class="pln"><span class="n"><a id="t203" href="#t203">203</a></span><span class="t"> </span><span class="r"></span></p>
|
|
286
|
-
<p class="pln"><span class="n"><a id="t204" href="#t204">204</a></span><span class="t"> <span class="com"># Update settings from config data</span> </span><span class="r"></span></p>
|
|
287
|
-
<p class="mis show_mis"><span class="n"><a id="t205" href="#t205">205</a></span><span class="t"> <span class="key">for</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">config_data</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
288
|
-
<p class="mis show_mis"><span class="n"><a id="t206" href="#t206">206</a></span><span class="t"> <span class="key">if</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">settings</span><span class="op">,</span> <span class="nam">key</span><span class="op">)</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
289
|
-
<p class="mis show_mis"><span class="n"><a id="t207" href="#t207">207</a></span><span class="t"> <span class="nam">setattr</span><span class="op">(</span><span class="nam">settings</span><span class="op">,</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
290
|
-
<p class="pln"><span class="n"><a id="t208" href="#t208">208</a></span><span class="t"> </span><span class="r"></span></p>
|
|
291
|
-
<p class="pln"><span class="n"><a id="t209" href="#t209">209</a></span><span class="t"> <span class="com"># Auto-enable OpenTelemetry if GOLF_API_KEY is present and telemetry wasn't explicitly configured</span> </span><span class="r"></span></p>
|
|
292
|
-
<p class="mis show_mis"><span class="n"><a id="t210" href="#t210">210</a></span><span class="t"> <span class="key">import</span> <span class="nam">os</span> </span><span class="r"></span></p>
|
|
293
|
-
<p class="pln"><span class="n"><a id="t211" href="#t211">211</a></span><span class="t"> </span><span class="r"></span></p>
|
|
294
|
-
<p class="mis show_mis"><span class="n"><a id="t212" href="#t212">212</a></span><span class="t"> <span class="key">if</span> <span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="str">"GOLF_API_KEY"</span><span class="op">)</span> <span class="key">and</span> <span class="str">"opentelemetry_enabled"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">config_data</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
295
|
-
<p class="mis show_mis"><span class="n"><a id="t213" href="#t213">213</a></span><span class="t"> <span class="nam">settings</span><span class="op">.</span><span class="nam">opentelemetry_enabled</span> <span class="op">=</span> <span class="key">True</span> </span><span class="r"></span></p>
|
|
296
|
-
<p class="pln"><span class="n"><a id="t214" href="#t214">214</a></span><span class="t"> </span><span class="r"></span></p>
|
|
297
|
-
<p class="mis show_mis"><span class="n"><a id="t215" href="#t215">215</a></span><span class="t"> <span class="key">return</span> <span class="nam">settings</span> </span><span class="r"></span></p>
|
|
298
|
-
<p class="mis show_mis"><span class="n"><a id="t216" href="#t216">216</a></span><span class="t"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
299
|
-
<p class="mis show_mis"><span class="n"><a id="t217" href="#t217">217</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="str">f"[bold red]Error loading JSON config from {path}: {e}[/bold red]"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
300
|
-
<p class="mis show_mis"><span class="n"><a id="t218" href="#t218">218</a></span><span class="t"> <span class="key">return</span> <span class="nam">settings</span> </span><span class="r"></span></p>
|
|
301
|
-
</main>
|
|
302
|
-
<footer>
|
|
303
|
-
<div class="content">
|
|
304
|
-
<p>
|
|
305
|
-
<a class="nav" href="z_7ba499ed22986217_builder_telemetry_py.html">« prev</a>
|
|
306
|
-
<a class="nav" href="index.html">^ index</a>
|
|
307
|
-
<a class="nav" href="z_7ba499ed22986217_parser_py.html">» next</a>
|
|
308
|
-
|
|
309
|
-
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
|
|
310
|
-
created at 2025-08-16 18:46 +0200
|
|
311
|
-
</p>
|
|
312
|
-
</div>
|
|
313
|
-
</footer>
|
|
314
|
-
</body>
|
|
315
|
-
</html>
|