golf-mcp 0.2.1__py3-none-any.whl → 0.2.3__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 (69) hide show
  1. golf/__init__.py +1 -1
  2. golf/_endpoints.py +2 -2
  3. golf/_endpoints.py.in +6 -0
  4. golf/auth/__init__.py +4 -4
  5. golf/auth/factory.py +4 -2
  6. golf/auth/providers.py +169 -1
  7. golf/core/builder_auth.py +2 -2
  8. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/METADATA +1 -1
  9. golf_mcp-0.2.3.dist-info/RECORD +56 -0
  10. golf/examples/__pycache__/__init__.cpython-311.pyc +0 -0
  11. golf/examples/basic/.coverage +0 -0
  12. golf/examples/basic/__pycache__/auth.cpython-311.pyc +0 -0
  13. golf/examples/basic/htmlcov/.gitignore +0 -2
  14. golf/examples/basic/htmlcov/class_index.html +0 -547
  15. golf/examples/basic/htmlcov/coverage_html_cb_6fb7b396.js +0 -733
  16. golf/examples/basic/htmlcov/favicon_32_cb_58284776.png +0 -0
  17. golf/examples/basic/htmlcov/function_index.html +0 -2091
  18. golf/examples/basic/htmlcov/index.html +0 -349
  19. golf/examples/basic/htmlcov/keybd_closed_cb_ce680311.png +0 -0
  20. golf/examples/basic/htmlcov/status.json +0 -1
  21. golf/examples/basic/htmlcov/style_cb_8e611ae1.css +0 -337
  22. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496___init___py.html +0 -323
  23. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_api_key_py.html +0 -170
  24. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_factory_py.html +0 -430
  25. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_helpers_py.html +0 -288
  26. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_providers_py.html +0 -493
  27. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_registry_py.html +0 -353
  28. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950___init___py.html +0 -120
  29. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950_instrumentation_py.html +0 -1535
  30. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db___init___py.html +0 -98
  31. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_branding_py.html +0 -289
  32. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_main_py.html +0 -476
  33. golf/examples/basic/htmlcov/z_5a6c4e6bcc86fb2f___init___py.html +0 -97
  34. golf/examples/basic/htmlcov/z_6cadab9ec0df475d___init___py.html +0 -102
  35. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_build_py.html +0 -178
  36. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_init_py.html +0 -387
  37. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_run_py.html +0 -222
  38. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4___init___py.html +0 -106
  39. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4__endpoints_fallback_py.html +0 -107
  40. golf/examples/basic/htmlcov/z_7ba499ed22986217___init___py.html +0 -98
  41. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_auth_py.html +0 -306
  42. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_metrics_py.html +0 -329
  43. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_py.html +0 -1471
  44. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_telemetry_py.html +0 -186
  45. golf/examples/basic/htmlcov/z_7ba499ed22986217_config_py.html +0 -315
  46. golf/examples/basic/htmlcov/z_7ba499ed22986217_parser_py.html +0 -1149
  47. golf/examples/basic/htmlcov/z_7ba499ed22986217_platform_py.html +0 -279
  48. golf/examples/basic/htmlcov/z_7ba499ed22986217_telemetry_py.html +0 -589
  49. golf/examples/basic/htmlcov/z_7ba499ed22986217_transformer_py.html +0 -286
  50. golf/examples/basic/htmlcov/z_7d7da37693a43688___init___py.html +0 -107
  51. golf/examples/basic/htmlcov/z_7d7da37693a43688_collector_py.html +0 -417
  52. golf/examples/basic/htmlcov/z_7d7da37693a43688_registry_py.html +0 -109
  53. golf/examples/basic/htmlcov/z_abe733142b40ad4e___init___py.html +0 -109
  54. golf/examples/basic/htmlcov/z_abe733142b40ad4e_context_py.html +0 -150
  55. golf/examples/basic/htmlcov/z_abe733142b40ad4e_elicitation_py.html +0 -267
  56. golf/examples/basic/htmlcov/z_abe733142b40ad4e_sampling_py.html +0 -318
  57. golf/examples/basic/prompts/__pycache__/welcome.cpython-311.pyc +0 -0
  58. golf/examples/basic/resources/__pycache__/current_time.cpython-311.pyc +0 -0
  59. golf/examples/basic/resources/__pycache__/info.cpython-311.pyc +0 -0
  60. golf/examples/basic/resources/weather/__pycache__/common.cpython-311.pyc +0 -0
  61. golf/examples/basic/resources/weather/__pycache__/current.cpython-311.pyc +0 -0
  62. golf/examples/basic/resources/weather/__pycache__/forecast.cpython-311.pyc +0 -0
  63. golf/examples/basic/tools/__pycache__/calculator.cpython-311.pyc +0 -0
  64. golf/examples/basic/tools/say/__pycache__/hello.cpython-311.pyc +0 -0
  65. golf_mcp-0.2.1.dist-info/RECORD +0 -110
  66. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/WHEEL +0 -0
  67. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/entry_points.txt +0 -0
  68. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/licenses/LICENSE +0 -0
  69. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/top_level.txt +0 -0
@@ -1,323 +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/auth/__init__.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/auth/__init__.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
- &nbsp; toggle line displays
30
- </p>
31
- <p>
32
- <kbd>j</kbd>
33
- <kbd>k</kbd>
34
- &nbsp; next/prev highlighted chunk
35
- </p>
36
- <p>
37
- <kbd>0</kbd> &nbsp; (zero) top of page
38
- </p>
39
- <p>
40
- <kbd>1</kbd> &nbsp; (one) first highlighted chunk
41
- </p>
42
- <p>
43
- <kbd>[</kbd>
44
- <kbd>]</kbd>
45
- &nbsp; prev/next file
46
- </p>
47
- <p>
48
- <kbd>u</kbd> &nbsp; up to the index
49
- </p>
50
- <p>
51
- <kbd>?</kbd> &nbsp; show/hide this help
52
- </p>
53
- </div>
54
- </div>
55
- </aside>
56
- <h2>
57
- <span class="text">27 statements &nbsp;</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">27<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_6fcdee0582ba84e4__endpoints_fallback_py.html">&#xab; prev</a> &nbsp; &nbsp;
64
- <a id="indexLink" class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
65
- <a id="nextFileLink" class="nav" href="z_1c9a91c0e91c8496_api_key_py.html">&#xbb; next</a>
66
- &nbsp; &nbsp; &nbsp;
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">"""Modern authentication for Golf MCP servers using FastMCP 2.11+ providers.</span>&nbsp;</span><span class="r"></span></p>
84
- <p class="pln"><span class="n"><a id="t2" href="#t2">2</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
85
- <p class="pln"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="str">This module provides authentication configuration and utilities for Golf servers,</span>&nbsp;</span><span class="r"></span></p>
86
- <p class="pln"><span class="n"><a id="t4" href="#t4">4</a></span><span class="t"><span class="str">leveraging FastMCP's built-in authentication system with JWT verification,</span>&nbsp;</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 class="str">OAuth providers, and token management.</span>&nbsp;</span><span class="r"></span></p>
88
- <p class="pln"><span class="n"><a id="t6" href="#t6">6</a></span><span class="t"><span class="str">"""</span>&nbsp;</span><span class="r"></span></p>
89
- <p class="pln"><span class="n"><a id="t7" href="#t7">7</a></span><span class="t">&nbsp;</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">typing</span> <span class="key">import</span> <span class="nam">Any</span>&nbsp;</span><span class="r"></span></p>
91
- <p class="pln"><span class="n"><a id="t9" href="#t9">9</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
92
- <p class="pln"><span class="n"><a id="t10" href="#t10">10</a></span><span class="t"><span class="com"># Modern auth provider configurations and factory functions</span>&nbsp;</span><span class="r"></span></p>
93
- <p class="mis show_mis"><span class="n"><a id="t11" href="#t11">11</a></span><span class="t"><span class="key">from</span> <span class="op">.</span><span class="nam">providers</span> <span class="key">import</span> <span class="op">(</span>&nbsp;</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 class="nam">AuthConfig</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
95
- <p class="pln"><span class="n"><a id="t13" href="#t13">13</a></span><span class="t"> <span class="nam">JWTAuthConfig</span><span class="op">,</span>&nbsp;</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="nam">StaticTokenConfig</span><span class="op">,</span>&nbsp;</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 class="nam">OAuthServerConfig</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
98
- <p class="pln"><span class="n"><a id="t16" href="#t16">16</a></span><span class="t"> <span class="nam">RemoteAuthConfig</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
99
- <p class="pln"><span class="n"><a id="t17" href="#t17">17</a></span><span class="t"><span class="op">)</span>&nbsp;</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="key">from</span> <span class="op">.</span><span class="nam">factory</span> <span class="key">import</span> <span class="op">(</span>&nbsp;</span><span class="r"></span></p>
101
- <p class="pln"><span class="n"><a id="t19" href="#t19">19</a></span><span class="t"> <span class="nam">create_auth_provider</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
102
- <p class="pln"><span class="n"><a id="t20" href="#t20">20</a></span><span class="t"> <span class="nam">create_simple_jwt_provider</span><span class="op">,</span>&nbsp;</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 class="nam">create_dev_token_provider</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
104
- <p class="pln"><span class="n"><a id="t22" href="#t22">22</a></span><span class="t"><span class="op">)</span>&nbsp;</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="key">from</span> <span class="op">.</span><span class="nam">registry</span> <span class="key">import</span> <span class="op">(</span>&nbsp;</span><span class="r"></span></p>
106
- <p class="pln"><span class="n"><a id="t24" href="#t24">24</a></span><span class="t"> <span class="nam">BaseProviderPlugin</span><span class="op">,</span>&nbsp;</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="nam">AuthProviderFactory</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
108
- <p class="pln"><span class="n"><a id="t26" href="#t26">26</a></span><span class="t"> <span class="nam">get_provider_registry</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
109
- <p class="pln"><span class="n"><a id="t27" href="#t27">27</a></span><span class="t"> <span class="nam">register_provider_factory</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
110
- <p class="pln"><span class="n"><a id="t28" href="#t28">28</a></span><span class="t"> <span class="nam">register_provider_plugin</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
111
- <p class="pln"><span class="n"><a id="t29" href="#t29">29</a></span><span class="t"><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
112
- <p class="pln"><span class="n"><a id="t30" href="#t30">30</a></span><span class="t">&nbsp;</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 class="com"># Re-export for backward compatibility</span>&nbsp;</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">from</span> <span class="op">.</span><span class="nam">api_key</span> <span class="key">import</span> <span class="nam">configure_api_key</span><span class="op">,</span> <span class="nam">get_api_key_config</span><span class="op">,</span> <span class="nam">is_api_key_configured</span>&nbsp;</span><span class="r"></span></p>
115
- <p class="mis show_mis"><span class="n"><a id="t33" href="#t33">33</a></span><span class="t"><span class="key">from</span> <span class="op">.</span><span class="nam">helpers</span> <span class="key">import</span> <span class="op">(</span>&nbsp;</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 class="nam">debug_api_key_context</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
117
- <p class="pln"><span class="n"><a id="t35" href="#t35">35</a></span><span class="t"> <span class="nam">extract_token_from_header</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
118
- <p class="pln"><span class="n"><a id="t36" href="#t36">36</a></span><span class="t"> <span class="nam">get_api_key</span><span class="op">,</span>&nbsp;</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 class="nam">get_provider_token</span><span class="op">,</span>&nbsp;</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 class="nam">set_api_key</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
121
- <p class="pln"><span class="n"><a id="t39" href="#t39">39</a></span><span class="t"><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
122
- <p class="pln"><span class="n"><a id="t40" href="#t40">40</a></span><span class="t">&nbsp;</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 class="com"># Public API</span>&nbsp;</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">__all__</span> <span class="op">=</span> <span class="op">[</span>&nbsp;</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="com"># Main configuration functions</span>&nbsp;</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="str">"configure_auth"</span><span class="op">,</span>&nbsp;</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="str">"configure_jwt_auth"</span><span class="op">,</span>&nbsp;</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="str">"configure_dev_auth"</span><span class="op">,</span>&nbsp;</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="str">"get_auth_config"</span><span class="op">,</span>&nbsp;</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 class="com"># Provider configurations</span>&nbsp;</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="str">"AuthConfig"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
132
- <p class="pln"><span class="n"><a id="t50" href="#t50">50</a></span><span class="t"> <span class="str">"JWTAuthConfig"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
133
- <p class="pln"><span class="n"><a id="t51" href="#t51">51</a></span><span class="t"> <span class="str">"StaticTokenConfig"</span><span class="op">,</span>&nbsp;</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 class="str">"OAuthServerConfig"</span><span class="op">,</span>&nbsp;</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="str">"RemoteAuthConfig"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
136
- <p class="pln"><span class="n"><a id="t54" href="#t54">54</a></span><span class="t"> <span class="com"># Factory functions</span>&nbsp;</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 class="str">"create_auth_provider"</span><span class="op">,</span>&nbsp;</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="str">"create_simple_jwt_provider"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
139
- <p class="pln"><span class="n"><a id="t57" href="#t57">57</a></span><span class="t"> <span class="str">"create_dev_token_provider"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
140
- <p class="pln"><span class="n"><a id="t58" href="#t58">58</a></span><span class="t"> <span class="com"># Provider registry and plugins</span>&nbsp;</span><span class="r"></span></p>
141
- <p class="pln"><span class="n"><a id="t59" href="#t59">59</a></span><span class="t"> <span class="str">"BaseProviderPlugin"</span><span class="op">,</span>&nbsp;</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">"AuthProviderFactory"</span><span class="op">,</span>&nbsp;</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="str">"get_provider_registry"</span><span class="op">,</span>&nbsp;</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="str">"register_provider_factory"</span><span class="op">,</span>&nbsp;</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 class="str">"register_provider_plugin"</span><span class="op">,</span>&nbsp;</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"># API key functions (backward compatibility)</span>&nbsp;</span><span class="r"></span></p>
147
- <p class="pln"><span class="n"><a id="t65" href="#t65">65</a></span><span class="t"> <span class="str">"configure_api_key"</span><span class="op">,</span>&nbsp;</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 class="str">"get_api_key_config"</span><span class="op">,</span>&nbsp;</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="str">"is_api_key_configured"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
150
- <p class="pln"><span class="n"><a id="t68" href="#t68">68</a></span><span class="t"> <span class="com"># Helper functions</span>&nbsp;</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 class="str">"debug_api_key_context"</span><span class="op">,</span>&nbsp;</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="str">"extract_token_from_header"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
153
- <p class="pln"><span class="n"><a id="t71" href="#t71">71</a></span><span class="t"> <span class="str">"get_api_key"</span><span class="op">,</span>&nbsp;</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 class="str">"get_provider_token"</span><span class="op">,</span>&nbsp;</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="str">"set_api_key"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
156
- <p class="pln"><span class="n"><a id="t74" href="#t74">74</a></span><span class="t"><span class="op">]</span>&nbsp;</span><span class="r"></span></p>
157
- <p class="pln"><span class="n"><a id="t75" href="#t75">75</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
158
- <p class="pln"><span class="n"><a id="t76" href="#t76">76</a></span><span class="t"><span class="com"># Global storage for auth configuration</span>&nbsp;</span><span class="r"></span></p>
159
- <p class="mis show_mis"><span class="n"><a id="t77" href="#t77">77</a></span><span class="t"><span class="nam">_auth_config</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="key">None</span>&nbsp;</span><span class="r"></span></p>
160
- <p class="pln"><span class="n"><a id="t78" href="#t78">78</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
161
- <p class="pln"><span class="n"><a id="t79" href="#t79">79</a></span><span class="t">&nbsp;</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="key">def</span> <span class="nam">configure_auth</span><span class="op">(</span><span class="nam">config</span><span class="op">:</span> <span class="nam">AuthConfig</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
163
- <p class="pln"><span class="n"><a id="t81" href="#t81">81</a></span><span class="t"> <span class="str">"""Configure authentication for the Golf server.</span>&nbsp;</span><span class="r"></span></p>
164
- <p class="pln"><span class="n"><a id="t82" href="#t82">82</a></span><span class="t">&nbsp;</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="str"> This function should be called in auth.py to set up authentication</span>&nbsp;</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 class="str"> using FastMCP's modern auth providers.</span>&nbsp;</span><span class="r"></span></p>
167
- <p class="pln"><span class="n"><a id="t85" href="#t85">85</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
168
- <p class="pln"><span class="n"><a id="t86" href="#t86">86</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
169
- <p class="pln"><span class="n"><a id="t87" href="#t87">87</a></span><span class="t"><span class="str"> config: Authentication configuration (JWT, OAuth, Static, or Remote)</span>&nbsp;</span><span class="r"></span></p>
170
- <p class="pln"><span class="n"><a id="t88" href="#t88">88</a></span><span class="t"><span class="str"> The required_scopes should be specified in the config itself.</span>&nbsp;</span><span class="r"></span></p>
171
- <p class="pln"><span class="n"><a id="t89" href="#t89">89</a></span><span class="t">&nbsp;</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="str"> Examples:</span>&nbsp;</span><span class="r"></span></p>
173
- <p class="pln"><span class="n"><a id="t91" href="#t91">91</a></span><span class="t"><span class="str"> # JWT authentication with Auth0</span>&nbsp;</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="str"> from golf.auth import configure_auth, JWTAuthConfig</span>&nbsp;</span><span class="r"></span></p>
175
- <p class="pln"><span class="n"><a id="t93" href="#t93">93</a></span><span class="t">&nbsp;</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="str"> configure_auth(</span>&nbsp;</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 class="str"> JWTAuthConfig(</span>&nbsp;</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="str"> jwks_uri="https://your-domain.auth0.com/.well-known/jwks.json",</span>&nbsp;</span><span class="r"></span></p>
179
- <p class="pln"><span class="n"><a id="t97" href="#t97">97</a></span><span class="t"><span class="str"> issuer="https://your-domain.auth0.com/",</span>&nbsp;</span><span class="r"></span></p>
180
- <p class="pln"><span class="n"><a id="t98" href="#t98">98</a></span><span class="t"><span class="str"> audience="https://your-api.example.com",</span>&nbsp;</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 class="str"> required_scopes=["read:data"],</span>&nbsp;</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 class="str"> )</span>&nbsp;</span><span class="r"></span></p>
183
- <p class="pln"><span class="n"><a id="t101" href="#t101">101</a></span><span class="t"><span class="str"> )</span>&nbsp;</span><span class="r"></span></p>
184
- <p class="pln"><span class="n"><a id="t102" href="#t102">102</a></span><span class="t">&nbsp;</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 class="str"> # Development with static tokens</span>&nbsp;</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"> from golf.auth import configure_auth, StaticTokenConfig</span>&nbsp;</span><span class="r"></span></p>
187
- <p class="pln"><span class="n"><a id="t105" href="#t105">105</a></span><span class="t">&nbsp;</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 class="str"> configure_auth(</span>&nbsp;</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"> StaticTokenConfig(</span>&nbsp;</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"> tokens={</span>&nbsp;</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"> "dev-token-123": {</span>&nbsp;</span><span class="r"></span></p>
192
- <p class="pln"><span class="n"><a id="t110" href="#t110">110</a></span><span class="t"><span class="str"> "client_id": "dev-client",</span>&nbsp;</span><span class="r"></span></p>
193
- <p class="pln"><span class="n"><a id="t111" href="#t111">111</a></span><span class="t"><span class="str"> "scopes": ["read", "write"],</span>&nbsp;</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 class="str"> }</span>&nbsp;</span><span class="r"></span></p>
195
- <p class="pln"><span class="n"><a id="t113" href="#t113">113</a></span><span class="t"><span class="str"> },</span>&nbsp;</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 class="str"> required_scopes=["read"],</span>&nbsp;</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="str"> )</span>&nbsp;</span><span class="r"></span></p>
198
- <p class="pln"><span class="n"><a id="t116" href="#t116">116</a></span><span class="t"><span class="str"> )</span>&nbsp;</span><span class="r"></span></p>
199
- <p class="pln"><span class="n"><a id="t117" href="#t117">117</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
200
- <p class="pln"><span class="n"><a id="t118" href="#t118">118</a></span><span class="t"><span class="str"> # Full OAuth server</span>&nbsp;</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="str"> from golf.auth import configure_auth, OAuthServerConfig</span>&nbsp;</span><span class="r"></span></p>
202
- <p class="pln"><span class="n"><a id="t120" href="#t120">120</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
203
- <p class="pln"><span class="n"><a id="t121" href="#t121">121</a></span><span class="t"><span class="str"> configure_auth(</span>&nbsp;</span><span class="r"></span></p>
204
- <p class="pln"><span class="n"><a id="t122" href="#t122">122</a></span><span class="t"><span class="str"> OAuthServerConfig(</span>&nbsp;</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 class="str"> base_url="https://your-server.example.com",</span>&nbsp;</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="str"> valid_scopes=["read", "write", "admin"],</span>&nbsp;</span><span class="r"></span></p>
207
- <p class="pln"><span class="n"><a id="t125" href="#t125">125</a></span><span class="t"><span class="str"> default_scopes=["read"],</span>&nbsp;</span><span class="r"></span></p>
208
- <p class="pln"><span class="n"><a id="t126" href="#t126">126</a></span><span class="t"><span class="str"> required_scopes=["read"],</span>&nbsp;</span><span class="r"></span></p>
209
- <p class="pln"><span class="n"><a id="t127" href="#t127">127</a></span><span class="t"><span class="str"> )</span>&nbsp;</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 class="str"> )</span>&nbsp;</span><span class="r"></span></p>
211
- <p class="pln"><span class="n"><a id="t129" href="#t129">129</a></span><span class="t"><span class="str"> """</span>&nbsp;</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 class="key">global</span> <span class="nam">_auth_config</span>&nbsp;</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="nam">_auth_config</span> <span class="op">=</span> <span class="nam">config</span>&nbsp;</span><span class="r"></span></p>
214
- <p class="pln"><span class="n"><a id="t132" href="#t132">132</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
215
- <p class="pln"><span class="n"><a id="t133" href="#t133">133</a></span><span class="t">&nbsp;</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">configure_jwt_auth</span><span class="op">(</span>&nbsp;</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="op">*</span><span class="op">,</span>&nbsp;</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="nam">jwks_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="key">None</span><span class="op">,</span>&nbsp;</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="nam">public_key</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="key">None</span><span class="op">,</span>&nbsp;</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 class="nam">issuer</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="key">None</span><span class="op">,</span>&nbsp;</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="nam">audience</span><span class="op">:</span> <span class="nam">str</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="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">,</span>&nbsp;</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 class="nam">required_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="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">,</span>&nbsp;</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="op">**</span><span class="nam">env_vars</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span>&nbsp;</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="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</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 class="str">"""Convenience function to configure JWT authentication.</span>&nbsp;</span><span class="r"></span></p>
226
- <p class="pln"><span class="n"><a id="t144" href="#t144">144</a></span><span class="t">&nbsp;</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"> Args:</span>&nbsp;</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"> jwks_uri: JWKS URI for key fetching</span>&nbsp;</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"> public_key: Static public key (PEM format)</span>&nbsp;</span><span class="r"></span></p>
230
- <p class="pln"><span class="n"><a id="t148" href="#t148">148</a></span><span class="t"><span class="str"> issuer: Expected issuer claim</span>&nbsp;</span><span class="r"></span></p>
231
- <p class="pln"><span class="n"><a id="t149" href="#t149">149</a></span><span class="t"><span class="str"> audience: Expected audience claim(s)</span>&nbsp;</span><span class="r"></span></p>
232
- <p class="pln"><span class="n"><a id="t150" href="#t150">150</a></span><span class="t"><span class="str"> required_scopes: Required scopes for all requests</span>&nbsp;</span><span class="r"></span></p>
233
- <p class="pln"><span class="n"><a id="t151" href="#t151">151</a></span><span class="t"><span class="str"> **env_vars: Environment variable names (public_key_env_var,</span>&nbsp;</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 class="str"> jwks_uri_env_var, etc.)</span>&nbsp;</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 class="str"> """</span>&nbsp;</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="nam">config</span> <span class="op">=</span> <span class="nam">JWTAuthConfig</span><span class="op">(</span>&nbsp;</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="nam">jwks_uri</span><span class="op">=</span><span class="nam">jwks_uri</span><span class="op">,</span>&nbsp;</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 class="nam">public_key</span><span class="op">=</span><span class="nam">public_key</span><span class="op">,</span>&nbsp;</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="nam">issuer</span><span class="op">=</span><span class="nam">issuer</span><span class="op">,</span>&nbsp;</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="nam">audience</span><span class="op">=</span><span class="nam">audience</span><span class="op">,</span>&nbsp;</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 class="nam">required_scopes</span><span class="op">=</span><span class="nam">required_scopes</span> <span class="key">or</span> <span class="op">[</span><span class="op">]</span><span class="op">,</span>&nbsp;</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="op">**</span><span class="nam">env_vars</span><span class="op">,</span>&nbsp;</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="op">)</span>&nbsp;</span><span class="r"></span></p>
244
- <p class="mis show_mis"><span class="n"><a id="t162" href="#t162">162</a></span><span class="t"> <span class="nam">configure_auth</span><span class="op">(</span><span class="nam">config</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
245
- <p class="pln"><span class="n"><a id="t163" href="#t163">163</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
246
- <p class="pln"><span class="n"><a id="t164" href="#t164">164</a></span><span class="t">&nbsp;</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="key">def</span> <span class="nam">configure_dev_auth</span><span class="op">(</span>&nbsp;</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 class="nam">tokens</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="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">,</span>&nbsp;</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="nam">required_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="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
250
- <p class="pln"><span class="n"><a id="t168" href="#t168">168</a></span><span class="t"><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</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 class="str">"""Convenience function to configure development authentication.</span>&nbsp;</span><span class="r"></span></p>
252
- <p class="pln"><span class="n"><a id="t170" href="#t170">170</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
253
- <p class="pln"><span class="n"><a id="t171" href="#t171">171</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
254
- <p class="pln"><span class="n"><a id="t172" href="#t172">172</a></span><span class="t"><span class="str"> tokens: Token dictionary or None for defaults</span>&nbsp;</span><span class="r"></span></p>
255
- <p class="pln"><span class="n"><a id="t173" href="#t173">173</a></span><span class="t"><span class="str"> required_scopes: Required scopes for all requests</span>&nbsp;</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 class="str"> """</span>&nbsp;</span><span class="r"></span></p>
257
- <p class="mis show_mis"><span class="n"><a id="t175" href="#t175">175</a></span><span class="t"> <span class="key">if</span> <span class="nam">tokens</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span>&nbsp;</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="nam">tokens</span> <span class="op">=</span> <span class="op">{</span>&nbsp;</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 class="str">"dev-token-123"</span><span class="op">:</span> <span class="op">{</span>&nbsp;</span><span class="r"></span></p>
260
- <p class="pln"><span class="n"><a id="t178" href="#t178">178</a></span><span class="t"> <span class="str">"client_id"</span><span class="op">:</span> <span class="str">"dev-client"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
261
- <p class="pln"><span class="n"><a id="t179" href="#t179">179</a></span><span class="t"> <span class="str">"scopes"</span><span class="op">:</span> <span class="op">[</span><span class="str">"read"</span><span class="op">,</span> <span class="str">"write"</span><span class="op">]</span><span class="op">,</span>&nbsp;</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 class="op">}</span><span class="op">,</span>&nbsp;</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="str">"admin-token-456"</span><span class="op">:</span> <span class="op">{</span>&nbsp;</span><span class="r"></span></p>
264
- <p class="pln"><span class="n"><a id="t182" href="#t182">182</a></span><span class="t"> <span class="str">"client_id"</span><span class="op">:</span> <span class="str">"admin-client"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
265
- <p class="pln"><span class="n"><a id="t183" href="#t183">183</a></span><span class="t"> <span class="str">"scopes"</span><span class="op">:</span> <span class="op">[</span><span class="str">"read"</span><span class="op">,</span> <span class="str">"write"</span><span class="op">,</span> <span class="str">"admin"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
266
- <p class="pln"><span class="n"><a id="t184" href="#t184">184</a></span><span class="t"> <span class="op">}</span><span class="op">,</span>&nbsp;</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 class="op">}</span>&nbsp;</span><span class="r"></span></p>
268
- <p class="pln"><span class="n"><a id="t186" href="#t186">186</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
269
- <p class="mis show_mis"><span class="n"><a id="t187" href="#t187">187</a></span><span class="t"> <span class="nam">config</span> <span class="op">=</span> <span class="nam">StaticTokenConfig</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
270
- <p class="pln"><span class="n"><a id="t188" href="#t188">188</a></span><span class="t"> <span class="nam">tokens</span><span class="op">=</span><span class="nam">tokens</span><span class="op">,</span>&nbsp;</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 class="nam">required_scopes</span><span class="op">=</span><span class="nam">required_scopes</span> <span class="key">or</span> <span class="op">[</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
272
- <p class="pln"><span class="n"><a id="t190" href="#t190">190</a></span><span class="t"> <span class="op">)</span>&nbsp;</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">configure_auth</span><span class="op">(</span><span class="nam">config</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
274
- <p class="pln"><span class="n"><a id="t192" href="#t192">192</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
275
- <p class="pln"><span class="n"><a id="t193" href="#t193">193</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
276
- <p class="mis show_mis"><span class="n"><a id="t194" href="#t194">194</a></span><span class="t"><span class="key">def</span> <span class="nam">get_auth_config</span><span class="op">(</span><span class="op">)</span> <span class="op">-></span> <span class="nam">AuthConfig</span> <span class="op">|</span> <span class="key">None</span><span class="op">:</span>&nbsp;</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 class="str">"""Get the current auth configuration.</span>&nbsp;</span><span class="r"></span></p>
278
- <p class="pln"><span class="n"><a id="t196" href="#t196">196</a></span><span class="t">&nbsp;</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"> Returns:</span>&nbsp;</span><span class="r"></span></p>
280
- <p class="pln"><span class="n"><a id="t198" href="#t198">198</a></span><span class="t"><span class="str"> AuthConfig if configured, None otherwise</span>&nbsp;</span><span class="r"></span></p>
281
- <p class="pln"><span class="n"><a id="t199" href="#t199">199</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
282
- <p class="mis show_mis"><span class="n"><a id="t200" href="#t200">200</a></span><span class="t"> <span class="key">return</span> <span class="nam">_auth_config</span>&nbsp;</span><span class="r"></span></p>
283
- <p class="pln"><span class="n"><a id="t201" href="#t201">201</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
284
- <p class="pln"><span class="n"><a id="t202" href="#t202">202</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
285
- <p class="mis show_mis"><span class="n"><a id="t203" href="#t203">203</a></span><span class="t"><span class="key">def</span> <span class="nam">is_auth_configured</span><span class="op">(</span><span class="op">)</span> <span class="op">-></span> <span class="nam">bool</span><span class="op">:</span>&nbsp;</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="str">"""Check if authentication is configured.</span>&nbsp;</span><span class="r"></span></p>
287
- <p class="pln"><span class="n"><a id="t205" href="#t205">205</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
288
- <p class="pln"><span class="n"><a id="t206" href="#t206">206</a></span><span class="t"><span class="str"> Returns:</span>&nbsp;</span><span class="r"></span></p>
289
- <p class="pln"><span class="n"><a id="t207" href="#t207">207</a></span><span class="t"><span class="str"> True if authentication is configured, False otherwise</span>&nbsp;</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 class="str"> """</span>&nbsp;</span><span class="r"></span></p>
291
- <p class="mis show_mis"><span class="n"><a id="t209" href="#t209">209</a></span><span class="t"> <span class="key">return</span> <span class="nam">_auth_config</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span>&nbsp;</span><span class="r"></span></p>
292
- <p class="pln"><span class="n"><a id="t210" href="#t210">210</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
293
- <p class="pln"><span class="n"><a id="t211" href="#t211">211</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
294
- <p class="pln"><span class="n"><a id="t212" href="#t212">212</a></span><span class="t"><span class="com"># Breaking change in Golf 0.2.x: Legacy auth system removed</span>&nbsp;</span><span class="r"></span></p>
295
- <p class="pln"><span class="n"><a id="t213" href="#t213">213</a></span><span class="t"><span class="com"># Users must migrate to modern auth configurations</span>&nbsp;</span><span class="r"></span></p>
296
- <p class="pln"><span class="n"><a id="t214" href="#t214">214</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
297
- <p class="pln"><span class="n"><a id="t215" href="#t215">215</a></span><span class="t">&nbsp;</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">def</span> <span class="nam">create_auth_provider_from_config</span><span class="op">(</span><span class="op">)</span> <span class="op">-></span> <span class="nam">object</span> <span class="op">|</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
299
- <p class="pln"><span class="n"><a id="t217" href="#t217">217</a></span><span class="t"> <span class="str">"""Create an auth provider from the current configuration.</span>&nbsp;</span><span class="r"></span></p>
300
- <p class="pln"><span class="n"><a id="t218" href="#t218">218</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
301
- <p class="pln"><span class="n"><a id="t219" href="#t219">219</a></span><span class="t"><span class="str"> Returns:</span>&nbsp;</span><span class="r"></span></p>
302
- <p class="pln"><span class="n"><a id="t220" href="#t220">220</a></span><span class="t"><span class="str"> FastMCP AuthProvider instance or None if not configured</span>&nbsp;</span><span class="r"></span></p>
303
- <p class="pln"><span class="n"><a id="t221" href="#t221">221</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
304
- <p class="mis show_mis"><span class="n"><a id="t222" href="#t222">222</a></span><span class="t"> <span class="nam">config</span> <span class="op">=</span> <span class="nam">get_auth_config</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
305
- <p class="mis show_mis"><span class="n"><a id="t223" href="#t223">223</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">config</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
306
- <p class="mis show_mis"><span class="n"><a id="t224" href="#t224">224</a></span><span class="t"> <span class="key">return</span> <span class="key">None</span>&nbsp;</span><span class="r"></span></p>
307
- <p class="pln"><span class="n"><a id="t225" href="#t225">225</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
308
- <p class="mis show_mis"><span class="n"><a id="t226" href="#t226">226</a></span><span class="t"> <span class="key">return</span> <span class="nam">create_auth_provider</span><span class="op">(</span><span class="nam">config</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
309
- </main>
310
- <footer>
311
- <div class="content">
312
- <p>
313
- <a class="nav" href="z_6fcdee0582ba84e4__endpoints_fallback_py.html">&#xab; prev</a> &nbsp; &nbsp;
314
- <a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
315
- <a class="nav" href="z_1c9a91c0e91c8496_api_key_py.html">&#xbb; next</a>
316
- &nbsp; &nbsp; &nbsp;
317
- <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
318
- created at 2025-08-16 18:46 +0200
319
- </p>
320
- </div>
321
- </footer>
322
- </body>
323
- </html>