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,267 +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/utilities/elicitation.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/utilities/elicitation.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">47 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">47<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_abe733142b40ad4e_context_py.html">« prev</a>
|
|
64
|
-
<a id="indexLink" class="nav" href="index.html">^ index</a>
|
|
65
|
-
<a id="nextFileLink" class="nav" href="z_abe733142b40ad4e_sampling_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">"""Elicitation utilities for Golf MCP tools.</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="pln"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="str">This module provides simplified elicitation functions that Golf tool authors</span> </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">can use without needing to manage FastMCP Context objects directly.</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 class="str">"""</span> </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><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">typing</span> <span class="key">import</span> <span class="nam">Any</span><span class="op">,</span> <span class="nam">TypeVar</span><span class="op">,</span> <span class="nam">overload</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">collections</span><span class="op">.</span><span class="nam">abc</span> <span class="key">import</span> <span class="nam">Callable</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="key">from</span> <span class="op">.</span><span class="nam">context</span> <span class="key">import</span> <span class="nam">get_current_context</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="mis show_mis"><span class="n"><a id="t12" href="#t12">12</a></span><span class="t"><span class="nam">T</span> <span class="op">=</span> <span class="nam">TypeVar</span><span class="op">(</span><span class="str">"T"</span><span class="op">)</span> </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><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="com"># Apply telemetry instrumentation if available</span> </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="key">try</span><span class="op">:</span> </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="key">from</span> <span class="nam">golf</span><span class="op">.</span><span class="nam">telemetry</span> <span class="key">import</span> <span class="nam">instrument_elicitation</span> </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><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">_instrumentation_available</span> <span class="op">=</span> <span class="key">True</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="key">except</span> <span class="nam">ImportError</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">_instrumentation_available</span> <span class="op">=</span> <span class="key">False</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="key">def</span> <span class="nam">instrument_elicitation</span><span class="op">(</span><span class="nam">func</span><span class="op">:</span> <span class="nam">Callable</span><span class="op">,</span> <span class="nam">elicitation_type</span><span class="op">:</span> <span class="nam">str</span> <span class="op">=</span> <span class="str">"elicit"</span><span class="op">)</span> <span class="op">-></span> <span class="nam">Callable</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
105
|
-
<p class="pln"><span class="n"><a id="t23" href="#t23">23</a></span><span class="t"> <span class="str">"""No-op instrumentation when telemetry is not available."""</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">return</span> <span class="nam">func</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><span class="r"></span></p>
|
|
108
|
-
<p class="pln"><span class="n"><a id="t26" href="#t26">26</a></span><span class="t"> </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="op">@</span><span class="nam">overload</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">async</span> <span class="key">def</span> <span class="nam">elicit</span><span class="op">(</span> </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="nam">message</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</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 class="nam">response_type</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>
|
|
113
|
-
<p class="pln"><span class="n"><a id="t31" href="#t31">31</a></span><span class="t"><span class="op">)</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><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">"""Elicit with no response type returns empty dict."""</span> </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="op">...</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="pln"><span class="n"><a id="t35" href="#t35">35</a></span><span class="t"> </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="op">@</span><span class="nam">overload</span> </span><span class="r"></span></p>
|
|
119
|
-
<p class="mis show_mis"><span class="n"><a id="t37" href="#t37">37</a></span><span class="t"><span class="key">async</span> <span class="key">def</span> <span class="nam">elicit</span><span class="op">(</span> </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">message</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> </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="nam">response_type</span><span class="op">:</span> <span class="nam">type</span><span class="op">[</span><span class="nam">T</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="op">)</span> <span class="op">-></span> <span class="nam">T</span><span class="op">:</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 class="str">"""Elicit with response type returns typed data."""</span> </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="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><span class="r"></span></p>
|
|
126
|
-
<p class="pln"><span class="n"><a id="t44" href="#t44">44</a></span><span class="t"> </span><span class="r"></span></p>
|
|
127
|
-
<p class="mis show_mis"><span class="n"><a id="t45" href="#t45">45</a></span><span class="t"><span class="op">@</span><span class="nam">overload</span> </span><span class="r"></span></p>
|
|
128
|
-
<p class="mis show_mis"><span class="n"><a id="t46" href="#t46">46</a></span><span class="t"><span class="key">async</span> <span class="key">def</span> <span class="nam">elicit</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="nam">message</span><span class="op">:</span> <span class="nam">str</span><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 class="nam">response_type</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><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="op">)</span> <span class="op">-></span> <span class="nam">str</span><span class="op">:</span> </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">"""Elicit with list of options returns selected string."""</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="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><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="key">async</span> <span class="key">def</span> <span class="nam">elicit</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 class="nam">message</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> </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="nam">response_type</span><span class="op">:</span> <span class="nam">type</span><span class="op">[</span><span class="nam">T</span><span class="op">]</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> </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="op">)</span> <span class="op">-></span> <span class="nam">T</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">str</span><span class="op">:</span> </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="str">"""Request additional information from the user via MCP elicitation.</span> </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><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"> This is a simplified wrapper around FastMCP's Context.elicit() method</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="str"> that automatically handles context retrieval and response processing.</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><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"> Args:</span> </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="str"> message: Human-readable message explaining what information is needed</span> </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"> response_type: The type of response expected:</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 class="str"> - None: Returns empty dict (for confirmation prompts)</span> </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"> - type[T]: Returns validated instance of T (BaseModel, dataclass, etc.)</span> </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"> - list[str]: Returns selected string from the options</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="str"> Returns:</span> </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"> The user's response in the requested format</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="str"> Raises:</span> </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="str"> RuntimeError: If called outside MCP context or user declines/cancels</span> </span><span class="r"></span></p>
|
|
157
|
-
<p class="pln"><span class="n"><a id="t75" href="#t75">75</a></span><span class="t"><span class="str"> ValueError: If response validation fails</span> </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><span class="r"></span></p>
|
|
159
|
-
<p class="pln"><span class="n"><a id="t77" href="#t77">77</a></span><span class="t"><span class="str"> Examples:</span> </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="str"> ```python</span> </span><span class="r"></span></p>
|
|
161
|
-
<p class="pln"><span class="n"><a id="t79" href="#t79">79</a></span><span class="t"><span class="str"> from golf.utilities import elicit</span> </span><span class="r"></span></p>
|
|
162
|
-
<p class="pln"><span class="n"><a id="t80" href="#t80">80</a></span><span class="t"><span class="str"> from pydantic import BaseModel</span> </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><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="str"> class UserInfo(BaseModel):</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="str"> name: str</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 class="str"> email: str</span> </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><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"> async def collect_user_info():</span> </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"> # Structured elicitation</span> </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"> info = await elicit("Please provide your details:", UserInfo)</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="str"> # Simple text elicitation</span> </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"> reason = await elicit("Why do you need this?", str)</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><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="str"> # Multiple choice elicitation</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="str"> priority = await elicit("Select priority:", ["low", "medium", "high"])</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="str"> # Confirmation elicitation</span> </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"> await elicit("Proceed with the action?")</span> </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><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"> return f"User {info.name} requested {reason} with {priority} priority"</span> </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> </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> </span><span class="r"></span></p>
|
|
184
|
-
<p class="mis show_mis"><span class="n"><a id="t102" href="#t102">102</a></span><span class="t"> <span class="key">try</span><span class="op">:</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 class="com"># Get the current FastMCP context</span> </span><span class="r"></span></p>
|
|
186
|
-
<p class="mis show_mis"><span class="n"><a id="t104" href="#t104">104</a></span><span class="t"> <span class="nam">ctx</span> <span class="op">=</span> <span class="nam">get_current_context</span><span class="op">(</span><span class="op">)</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><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="com"># Call the context's elicit method</span> </span><span class="r"></span></p>
|
|
189
|
-
<p class="mis show_mis"><span class="n"><a id="t107" href="#t107">107</a></span><span class="t"> <span class="nam">result</span> <span class="op">=</span> <span class="key">await</span> <span class="nam">ctx</span><span class="op">.</span><span class="nam">elicit</span><span class="op">(</span><span class="nam">message</span><span class="op">,</span> <span class="nam">response_type</span><span class="op">)</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><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="com"># Handle the response based on the action</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">hasattr</span><span class="op">(</span><span class="nam">result</span><span class="op">,</span> <span class="str">"action"</span><span class="op">)</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="key">if</span> <span class="nam">result</span><span class="op">.</span><span class="nam">action</span> <span class="op">==</span> <span class="str">"accept"</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
194
|
-
<p class="mis show_mis"><span class="n"><a id="t112" href="#t112">112</a></span><span class="t"> <span class="key">return</span> <span class="nam">result</span><span class="op">.</span><span class="nam">data</span> </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="key">elif</span> <span class="nam">result</span><span class="op">.</span><span class="nam">action</span> <span class="op">==</span> <span class="str">"decline"</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
196
|
-
<p class="mis show_mis"><span class="n"><a id="t114" href="#t114">114</a></span><span class="t"> <span class="key">raise</span> <span class="nam">RuntimeError</span><span class="op">(</span><span class="str">f"User declined the elicitation request: {message}"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
197
|
-
<p class="mis show_mis"><span class="n"><a id="t115" href="#t115">115</a></span><span class="t"> <span class="key">elif</span> <span class="nam">result</span><span class="op">.</span><span class="nam">action</span> <span class="op">==</span> <span class="str">"cancel"</span><span class="op">:</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="key">raise</span> <span class="nam">RuntimeError</span><span class="op">(</span><span class="str">f"User cancelled the elicitation request: {message}"</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 class="key">else</span><span class="op">:</span> </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">raise</span> <span class="nam">RuntimeError</span><span class="op">(</span><span class="str">f"Unexpected elicitation response: {result.action}"</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="key">else</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
202
|
-
<p class="pln"><span class="n"><a id="t120" href="#t120">120</a></span><span class="t"> <span class="com"># Direct response (shouldn't happen with current FastMCP)</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">return</span> <span class="nam">result</span> </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><span class="r"></span></p>
|
|
205
|
-
<p class="mis show_mis"><span class="n"><a id="t123" href="#t123">123</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>
|
|
206
|
-
<p class="mis show_mis"><span class="n"><a id="t124" href="#t124">124</a></span><span class="t"> <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">e</span><span class="op">,</span> <span class="nam">RuntimeError</span><span class="op">)</span><span class="op">:</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="key">raise</span> <span class="com"># Re-raise our custom errors</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">raise</span> <span class="nam">RuntimeError</span><span class="op">(</span><span class="str">f"Elicitation failed: {str(e)}"</span><span class="op">)</span> <span class="key">from</span> <span class="nam">e</span> </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><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="key">async</span> <span class="key">def</span> <span class="nam">elicit_confirmation</span><span class="op">(</span><span class="nam">message</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="nam">bool</span><span class="op">:</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 class="str">"""Request a simple yes/no confirmation from the user.</span> </span><span class="r"></span></p>
|
|
213
|
-
<p class="pln"><span class="n"><a id="t131" href="#t131">131</a></span><span class="t"> </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 class="str"> This is a convenience function for common confirmation prompts.</span> </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="pln"><span class="n"><a id="t134" href="#t134">134</a></span><span class="t"><span class="str"> Args:</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="str"> message: The confirmation message to show the user</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><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"> Returns:</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 class="str"> True if user confirmed, False if declined</span> </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><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="str"> Raises:</span> </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"> RuntimeError: If user cancels or other error occurs</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><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"> Example:</span> </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"> ```python</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"> from golf.utilities import elicit_confirmation</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><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"> async def delete_file(filename: str):</span> </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"> confirmed = await elicit_confirmation(</span> </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"> f"Are you sure you want to delete {filename}?"</span> </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"> )</span> </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"> if confirmed:</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 class="str"> # Proceed with deletion</span> </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"> return f"Deleted {filename}"</span> </span><span class="r"></span></p>
|
|
236
|
-
<p class="pln"><span class="n"><a id="t154" href="#t154">154</a></span><span class="t"><span class="str"> else:</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"> return "Deletion cancelled"</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 class="str"> ```</span> </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"> """</span> </span><span class="r"></span></p>
|
|
240
|
-
<p class="mis show_mis"><span class="n"><a id="t158" href="#t158">158</a></span><span class="t"> <span class="key">try</span><span class="op">:</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 class="com"># Use elicitation with boolean choice</span> </span><span class="r"></span></p>
|
|
242
|
-
<p class="mis show_mis"><span class="n"><a id="t160" href="#t160">160</a></span><span class="t"> <span class="nam">choice</span> <span class="op">=</span> <span class="key">await</span> <span class="nam">elicit</span><span class="op">(</span><span class="nam">message</span><span class="op">,</span> <span class="op">[</span><span class="str">"yes"</span><span class="op">,</span> <span class="str">"no"</span><span class="op">]</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
243
|
-
<p class="mis show_mis"><span class="n"><a id="t161" href="#t161">161</a></span><span class="t"> <span class="key">return</span> <span class="nam">choice</span><span class="op">.</span><span class="nam">lower</span><span class="op">(</span><span class="op">)</span> <span class="op">==</span> <span class="str">"yes"</span> </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="key">except</span> <span class="nam">RuntimeError</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span> </span><span class="r"></span></p>
|
|
245
|
-
<p class="mis show_mis"><span class="n"><a id="t163" href="#t163">163</a></span><span class="t"> <span class="key">if</span> <span class="str">"declined"</span> <span class="key">in</span> <span class="nam">str</span><span class="op">(</span><span class="nam">e</span><span class="op">)</span><span class="op">:</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">return</span> <span class="key">False</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="key">raise</span> <span class="com"># Re-raise cancellation or other errors</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><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="com"># Apply instrumentation to all elicitation functions</span> </span><span class="r"></span></p>
|
|
251
|
-
<p class="mis show_mis"><span class="n"><a id="t169" href="#t169">169</a></span><span class="t"><span class="nam">elicit</span> <span class="op">=</span> <span class="nam">instrument_elicitation</span><span class="op">(</span><span class="nam">elicit</span><span class="op">,</span> <span class="str">"elicit"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
252
|
-
<p class="mis show_mis"><span class="n"><a id="t170" href="#t170">170</a></span><span class="t"><span class="nam">elicit_confirmation</span> <span class="op">=</span> <span class="nam">instrument_elicitation</span><span class="op">(</span><span class="nam">elicit_confirmation</span><span class="op">,</span> <span class="str">"confirmation"</span><span class="op">)</span> </span><span class="r"></span></p>
|
|
253
|
-
</main>
|
|
254
|
-
<footer>
|
|
255
|
-
<div class="content">
|
|
256
|
-
<p>
|
|
257
|
-
<a class="nav" href="z_abe733142b40ad4e_context_py.html">« prev</a>
|
|
258
|
-
<a class="nav" href="index.html">^ index</a>
|
|
259
|
-
<a class="nav" href="z_abe733142b40ad4e_sampling_py.html">» next</a>
|
|
260
|
-
|
|
261
|
-
<a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
|
|
262
|
-
created at 2025-08-16 18:46 +0200
|
|
263
|
-
</p>
|
|
264
|
-
</div>
|
|
265
|
-
</footer>
|
|
266
|
-
</body>
|
|
267
|
-
</html>
|