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.

Files changed (64) hide show
  1. golf/__init__.py +1 -1
  2. golf/_endpoints.py.in +6 -0
  3. {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/METADATA +1 -1
  4. golf_mcp-0.2.4.dist-info/RECORD +56 -0
  5. golf/examples/__pycache__/__init__.cpython-311.pyc +0 -0
  6. golf/examples/basic/.coverage +0 -0
  7. golf/examples/basic/__pycache__/auth.cpython-311.pyc +0 -0
  8. golf/examples/basic/htmlcov/.gitignore +0 -2
  9. golf/examples/basic/htmlcov/class_index.html +0 -547
  10. golf/examples/basic/htmlcov/coverage_html_cb_6fb7b396.js +0 -733
  11. golf/examples/basic/htmlcov/favicon_32_cb_58284776.png +0 -0
  12. golf/examples/basic/htmlcov/function_index.html +0 -2091
  13. golf/examples/basic/htmlcov/index.html +0 -349
  14. golf/examples/basic/htmlcov/keybd_closed_cb_ce680311.png +0 -0
  15. golf/examples/basic/htmlcov/status.json +0 -1
  16. golf/examples/basic/htmlcov/style_cb_8e611ae1.css +0 -337
  17. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496___init___py.html +0 -323
  18. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_api_key_py.html +0 -170
  19. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_factory_py.html +0 -430
  20. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_helpers_py.html +0 -288
  21. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_providers_py.html +0 -493
  22. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_registry_py.html +0 -353
  23. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950___init___py.html +0 -120
  24. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950_instrumentation_py.html +0 -1535
  25. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db___init___py.html +0 -98
  26. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_branding_py.html +0 -289
  27. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_main_py.html +0 -476
  28. golf/examples/basic/htmlcov/z_5a6c4e6bcc86fb2f___init___py.html +0 -97
  29. golf/examples/basic/htmlcov/z_6cadab9ec0df475d___init___py.html +0 -102
  30. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_build_py.html +0 -178
  31. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_init_py.html +0 -387
  32. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_run_py.html +0 -222
  33. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4___init___py.html +0 -106
  34. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4__endpoints_fallback_py.html +0 -107
  35. golf/examples/basic/htmlcov/z_7ba499ed22986217___init___py.html +0 -98
  36. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_auth_py.html +0 -306
  37. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_metrics_py.html +0 -329
  38. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_py.html +0 -1471
  39. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_telemetry_py.html +0 -186
  40. golf/examples/basic/htmlcov/z_7ba499ed22986217_config_py.html +0 -315
  41. golf/examples/basic/htmlcov/z_7ba499ed22986217_parser_py.html +0 -1149
  42. golf/examples/basic/htmlcov/z_7ba499ed22986217_platform_py.html +0 -279
  43. golf/examples/basic/htmlcov/z_7ba499ed22986217_telemetry_py.html +0 -589
  44. golf/examples/basic/htmlcov/z_7ba499ed22986217_transformer_py.html +0 -286
  45. golf/examples/basic/htmlcov/z_7d7da37693a43688___init___py.html +0 -107
  46. golf/examples/basic/htmlcov/z_7d7da37693a43688_collector_py.html +0 -417
  47. golf/examples/basic/htmlcov/z_7d7da37693a43688_registry_py.html +0 -109
  48. golf/examples/basic/htmlcov/z_abe733142b40ad4e___init___py.html +0 -109
  49. golf/examples/basic/htmlcov/z_abe733142b40ad4e_context_py.html +0 -150
  50. golf/examples/basic/htmlcov/z_abe733142b40ad4e_elicitation_py.html +0 -267
  51. golf/examples/basic/htmlcov/z_abe733142b40ad4e_sampling_py.html +0 -318
  52. golf/examples/basic/prompts/__pycache__/welcome.cpython-311.pyc +0 -0
  53. golf/examples/basic/resources/__pycache__/current_time.cpython-311.pyc +0 -0
  54. golf/examples/basic/resources/__pycache__/info.cpython-311.pyc +0 -0
  55. golf/examples/basic/resources/weather/__pycache__/common.cpython-311.pyc +0 -0
  56. golf/examples/basic/resources/weather/__pycache__/current.cpython-311.pyc +0 -0
  57. golf/examples/basic/resources/weather/__pycache__/forecast.cpython-311.pyc +0 -0
  58. golf/examples/basic/tools/__pycache__/calculator.cpython-311.pyc +0 -0
  59. golf/examples/basic/tools/say/__pycache__/hello.cpython-311.pyc +0 -0
  60. golf_mcp-0.2.2.dist-info/RECORD +0 -110
  61. {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/WHEEL +0 -0
  62. {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/entry_points.txt +0 -0
  63. {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/licenses/LICENSE +0 -0
  64. {golf_mcp-0.2.2.dist-info → golf_mcp-0.2.4.dist-info}/top_level.txt +0 -0
@@ -1,170 +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/api_key.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/api_key.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">12 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">12<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_1c9a91c0e91c8496___init___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_factory_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">"""API Key authentication support for Golf MCP servers.</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 a simple API key pass-through mechanism 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">allowing tools to access API keys from request headers and forward them to</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">upstream services.</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">pydantic</span> <span class="key">import</span> <span class="nam">BaseModel</span><span class="op">,</span> <span class="nam">Field</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">&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">class</span> <span class="nam">ApiKeyConfig</span><span class="op">(</span><span class="nam">BaseModel</span><span class="op">)</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="str">"""Configuration for API key authentication."""</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">&nbsp;</span><span class="r"></span></p>
96
- <p class="mis show_mis"><span class="n"><a id="t14" href="#t14">14</a></span><span class="t"> <span class="nam">header_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">"X-API-Key"</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="str">"Name of the header containing the API key"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
97
- <p class="mis show_mis"><span class="n"><a id="t15" href="#t15">15</a></span><span class="t"> <span class="nam">header_prefix</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="nam">Field</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="str">""</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="nam">description</span><span class="op">=</span><span class="str">"Optional prefix to strip from the header value (e.g., 'Bearer ')"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
100
- <p class="pln"><span class="n"><a id="t18" href="#t18">18</a></span><span class="t"> <span class="op">)</span>&nbsp;</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">required</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">"Whether API key is required for all requests"</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">&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">&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="com"># Global configuration storage</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="nam">_api_key_config</span><span class="op">:</span> <span class="nam">ApiKeyConfig</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>
106
- <p class="pln"><span class="n"><a id="t24" href="#t24">24</a></span><span class="t">&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">&nbsp;</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="key">def</span> <span class="nam">configure_api_key</span><span class="op">(</span><span class="nam">header_name</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="str">"X-API-Key"</span><span class="op">,</span> <span class="nam">header_prefix</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="str">""</span><span class="op">,</span> <span class="nam">required</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="key">True</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>
109
- <p class="pln"><span class="n"><a id="t27" href="#t27">27</a></span><span class="t"> <span class="str">"""Configure API key extraction from request headers.</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">&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="str"> This function should be called in auth.py to set up API key handling.</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="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
114
- <p class="pln"><span class="n"><a id="t32" href="#t32">32</a></span><span class="t"><span class="str"> header_name: Name of the header containing the API key (default: "X-API-Key")</span>&nbsp;</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"> header_prefix: Optional prefix to strip from the header value (e.g., "Bearer ")</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="str"> required: Whether API key is required for all requests (default: True)</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">&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="str"> Example:</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="str"> # In auth.py</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="str"> from golf.auth.api_key import configure_api_key</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">&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"><span class="str"> # Require API key for all requests</span>&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="str"> configure_api_key(</span>&nbsp;</span><span class="r"></span></p>
124
- <p class="pln"><span class="n"><a id="t42" href="#t42">42</a></span><span class="t"><span class="str"> header_name="Authorization",</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="str"> header_prefix="Bearer ",</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"> required=True</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"> )</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">&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"> # Or make API key optional (pass-through mode)</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="str"> configure_api_key(</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"> header_name="Authorization",</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"> header_prefix="Bearer ",</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"> required=False</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"> )</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"> """</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="key">global</span> <span class="nam">_api_key_config</span>&nbsp;</span><span class="r"></span></p>
137
- <p class="mis show_mis"><span class="n"><a id="t55" href="#t55">55</a></span><span class="t"> <span class="nam">_api_key_config</span> <span class="op">=</span> <span class="nam">ApiKeyConfig</span><span class="op">(</span><span class="nam">header_name</span><span class="op">=</span><span class="nam">header_name</span><span class="op">,</span> <span class="nam">header_prefix</span><span class="op">=</span><span class="nam">header_prefix</span><span class="op">,</span> <span class="nam">required</span><span class="op">=</span><span class="nam">required</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">&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">&nbsp;</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="key">def</span> <span class="nam">get_api_key_config</span><span class="op">(</span><span class="op">)</span> <span class="op">-></span> <span class="nam">ApiKeyConfig</span> <span class="op">|</span> <span class="key">None</span><span class="op">:</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">"""Get the current API key configuration.</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">&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"> Returns:</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"> The API key configuration if set, None otherwise</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"> """</span>&nbsp;</span><span class="r"></span></p>
146
- <p class="mis show_mis"><span class="n"><a id="t64" href="#t64">64</a></span><span class="t"> <span class="key">return</span> <span class="nam">_api_key_config</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">&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">&nbsp;</span><span class="r"></span></p>
149
- <p class="mis show_mis"><span class="n"><a id="t67" href="#t67">67</a></span><span class="t"><span class="key">def</span> <span class="nam">is_api_key_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>
150
- <p class="pln"><span class="n"><a id="t68" href="#t68">68</a></span><span class="t"> <span class="str">"""Check if API key authentication is configured.</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">&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"> Returns:</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"> True if API key authentication is configured, False otherwise</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"> """</span>&nbsp;</span><span class="r"></span></p>
155
- <p class="mis show_mis"><span class="n"><a id="t73" href="#t73">73</a></span><span class="t"> <span class="key">return</span> <span class="nam">_api_key_config</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span>&nbsp;</span><span class="r"></span></p>
156
- </main>
157
- <footer>
158
- <div class="content">
159
- <p>
160
- <a class="nav" href="z_1c9a91c0e91c8496___init___py.html">&#xab; prev</a> &nbsp; &nbsp;
161
- <a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
162
- <a class="nav" href="z_1c9a91c0e91c8496_factory_py.html">&#xbb; next</a>
163
- &nbsp; &nbsp; &nbsp;
164
- <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
165
- created at 2025-08-16 18:46 +0200
166
- </p>
167
- </div>
168
- </footer>
169
- </body>
170
- </html>