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

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

Potentially problematic release.


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

Files changed (123) hide show
  1. golf/__init__.py +9 -1
  2. golf/_endpoints.py +6 -0
  3. golf/_endpoints_fallback.py +10 -0
  4. golf/auth/__init__.py +188 -84
  5. golf/auth/api_key.py +6 -14
  6. golf/auth/factory.py +333 -0
  7. golf/auth/helpers.py +12 -42
  8. golf/auth/providers.py +396 -0
  9. golf/auth/registry.py +256 -0
  10. golf/cli/branding.py +192 -0
  11. golf/cli/main.py +28 -69
  12. golf/commands/__init__.py +2 -0
  13. golf/commands/build.py +4 -7
  14. golf/commands/init.py +30 -53
  15. golf/commands/run.py +50 -20
  16. golf/core/builder.py +355 -414
  17. golf/core/builder_auth.py +63 -144
  18. golf/core/builder_telemetry.py +26 -3
  19. golf/core/config.py +38 -59
  20. golf/core/parser.py +132 -139
  21. golf/core/platform.py +12 -10
  22. golf/core/telemetry.py +11 -19
  23. golf/core/transformer.py +38 -15
  24. golf/examples/__pycache__/__init__.cpython-311.pyc +0 -0
  25. golf/examples/basic/.coverage +0 -0
  26. golf/examples/basic/.env.example +8 -4
  27. golf/examples/basic/README.md +117 -45
  28. golf/examples/basic/__pycache__/auth.cpython-311.pyc +0 -0
  29. golf/examples/basic/auth.py +76 -0
  30. golf/examples/basic/golf.json +2 -5
  31. golf/examples/basic/htmlcov/.gitignore +2 -0
  32. golf/examples/basic/htmlcov/class_index.html +547 -0
  33. golf/examples/basic/htmlcov/coverage_html_cb_6fb7b396.js +733 -0
  34. golf/examples/basic/htmlcov/favicon_32_cb_58284776.png +0 -0
  35. golf/examples/basic/htmlcov/function_index.html +2091 -0
  36. golf/examples/basic/htmlcov/index.html +349 -0
  37. golf/examples/basic/htmlcov/keybd_closed_cb_ce680311.png +0 -0
  38. golf/examples/basic/htmlcov/status.json +1 -0
  39. golf/examples/basic/htmlcov/style_cb_8e611ae1.css +337 -0
  40. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496___init___py.html +323 -0
  41. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_api_key_py.html +170 -0
  42. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_factory_py.html +430 -0
  43. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_helpers_py.html +288 -0
  44. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_providers_py.html +493 -0
  45. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_registry_py.html +353 -0
  46. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950___init___py.html +120 -0
  47. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950_instrumentation_py.html +1535 -0
  48. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db___init___py.html +98 -0
  49. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_branding_py.html +289 -0
  50. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_main_py.html +476 -0
  51. golf/examples/basic/htmlcov/z_5a6c4e6bcc86fb2f___init___py.html +97 -0
  52. golf/examples/basic/htmlcov/z_6cadab9ec0df475d___init___py.html +102 -0
  53. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_build_py.html +178 -0
  54. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_init_py.html +387 -0
  55. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_run_py.html +222 -0
  56. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4___init___py.html +106 -0
  57. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4__endpoints_fallback_py.html +107 -0
  58. golf/examples/basic/htmlcov/z_7ba499ed22986217___init___py.html +98 -0
  59. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_auth_py.html +306 -0
  60. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_metrics_py.html +329 -0
  61. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_py.html +1471 -0
  62. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_telemetry_py.html +186 -0
  63. golf/examples/basic/htmlcov/z_7ba499ed22986217_config_py.html +315 -0
  64. golf/examples/basic/htmlcov/z_7ba499ed22986217_parser_py.html +1149 -0
  65. golf/examples/basic/htmlcov/z_7ba499ed22986217_platform_py.html +279 -0
  66. golf/examples/basic/htmlcov/z_7ba499ed22986217_telemetry_py.html +589 -0
  67. golf/examples/basic/htmlcov/z_7ba499ed22986217_transformer_py.html +286 -0
  68. golf/examples/basic/htmlcov/z_7d7da37693a43688___init___py.html +107 -0
  69. golf/examples/basic/htmlcov/z_7d7da37693a43688_collector_py.html +417 -0
  70. golf/examples/basic/htmlcov/z_7d7da37693a43688_registry_py.html +109 -0
  71. golf/examples/basic/htmlcov/z_abe733142b40ad4e___init___py.html +109 -0
  72. golf/examples/basic/htmlcov/z_abe733142b40ad4e_context_py.html +150 -0
  73. golf/examples/basic/htmlcov/z_abe733142b40ad4e_elicitation_py.html +267 -0
  74. golf/examples/basic/htmlcov/z_abe733142b40ad4e_sampling_py.html +318 -0
  75. golf/examples/basic/prompts/__pycache__/welcome.cpython-311.pyc +0 -0
  76. golf/examples/basic/prompts/welcome.py +3 -5
  77. golf/examples/basic/resources/__pycache__/current_time.cpython-311.pyc +0 -0
  78. golf/examples/basic/resources/__pycache__/info.cpython-311.pyc +0 -0
  79. golf/examples/basic/resources/current_time.py +5 -13
  80. golf/examples/basic/resources/weather/__pycache__/common.cpython-311.pyc +0 -0
  81. golf/examples/basic/resources/weather/__pycache__/current.cpython-311.pyc +0 -0
  82. golf/examples/basic/resources/weather/__pycache__/forecast.cpython-311.pyc +0 -0
  83. golf/examples/basic/resources/weather/city.py +46 -0
  84. golf/examples/basic/resources/weather/common.py +4 -11
  85. golf/examples/basic/resources/weather/current.py +5 -5
  86. golf/examples/basic/resources/weather/forecast.py +5 -5
  87. golf/examples/basic/tools/__pycache__/calculator.cpython-311.pyc +0 -0
  88. golf/examples/basic/tools/calculator.py +94 -0
  89. golf/examples/basic/tools/say/__pycache__/hello.cpython-311.pyc +0 -0
  90. golf/examples/basic/tools/say/hello.py +65 -0
  91. golf/metrics/collector.py +100 -19
  92. golf/telemetry/__init__.py +4 -0
  93. golf/telemetry/instrumentation.py +484 -178
  94. golf/utilities/__init__.py +12 -0
  95. golf/utilities/context.py +53 -0
  96. golf/utilities/elicitation.py +170 -0
  97. golf/utilities/sampling.py +221 -0
  98. {golf_mcp-0.1.20.dist-info → golf_mcp-0.2.0.dist-info}/METADATA +51 -104
  99. golf_mcp-0.2.0.dist-info/RECORD +110 -0
  100. golf/auth/oauth.py +0 -861
  101. golf/auth/provider.py +0 -115
  102. golf/examples/api_key/.env +0 -2
  103. golf/examples/api_key/.env.example +0 -1
  104. golf/examples/api_key/README.md +0 -84
  105. golf/examples/api_key/golf.json +0 -8
  106. golf/examples/api_key/pre_build.py +0 -11
  107. golf/examples/api_key/tools/issues/create.py +0 -93
  108. golf/examples/api_key/tools/issues/list.py +0 -92
  109. golf/examples/api_key/tools/repos/list.py +0 -111
  110. golf/examples/api_key/tools/search/code.py +0 -106
  111. golf/examples/api_key/tools/users/get.py +0 -82
  112. golf/examples/basic/.env +0 -5
  113. golf/examples/basic/pre_build.py +0 -28
  114. golf/examples/basic/tools/github_user.py +0 -65
  115. golf/examples/basic/tools/hello.py +0 -34
  116. golf/examples/basic/tools/payments/charge.py +0 -70
  117. golf/examples/basic/tools/payments/common.py +0 -36
  118. golf/examples/basic/tools/payments/refund.py +0 -61
  119. golf_mcp-0.1.20.dist-info/RECORD +0 -60
  120. {golf_mcp-0.1.20.dist-info → golf_mcp-0.2.0.dist-info}/WHEEL +0 -0
  121. {golf_mcp-0.1.20.dist-info → golf_mcp-0.2.0.dist-info}/entry_points.txt +0 -0
  122. {golf_mcp-0.1.20.dist-info → golf_mcp-0.2.0.dist-info}/licenses/LICENSE +0 -0
  123. {golf_mcp-0.1.20.dist-info → golf_mcp-0.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,222 @@
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/commands/run.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/commands/run.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">65 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">65<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_6cadab9ec0df475d_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_7ba499ed22986217___init___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">"""Command to run the built FastMCP server."""</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="mis show_mis"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="key">import</span> <span class="nam">os</span>&nbsp;</span><span class="r"></span></p>
86
+ <p class="mis show_mis"><span class="n"><a id="t4" href="#t4">4</a></span><span class="t"><span class="key">import</span> <span class="nam">subprocess</span>&nbsp;</span><span class="r"></span></p>
87
+ <p class="mis show_mis"><span class="n"><a id="t5" href="#t5">5</a></span><span class="t"><span class="key">import</span> <span class="nam">sys</span>&nbsp;</span><span class="r"></span></p>
88
+ <p class="mis show_mis"><span class="n"><a id="t6" href="#t6">6</a></span><span class="t"><span class="key">from</span> <span class="nam">pathlib</span> <span class="key">import</span> <span class="nam">Path</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">rich</span><span class="op">.</span><span class="nam">console</span> <span class="key">import</span> <span class="nam">Console</span>&nbsp;</span><span class="r"></span></p>
91
+ <p class="mis show_mis"><span class="n"><a id="t9" href="#t9">9</a></span><span class="t"><span class="key">from</span> <span class="nam">rich</span><span class="op">.</span><span class="nam">panel</span> <span class="key">import</span> <span class="nam">Panel</span>&nbsp;</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="nam">rich</span><span class="op">.</span><span class="nam">align</span> <span class="key">import</span> <span class="nam">Align</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="nam">rich</span><span class="op">.</span><span class="nam">text</span> <span class="key">import</span> <span class="nam">Text</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">&nbsp;</span><span class="r"></span></p>
95
+ <p class="mis show_mis"><span class="n"><a id="t13" href="#t13">13</a></span><span class="t"><span class="key">from</span> <span class="nam">golf</span><span class="op">.</span><span class="nam">cli</span><span class="op">.</span><span class="nam">branding</span> <span class="key">import</span> <span class="nam">create_command_header</span><span class="op">,</span> <span class="nam">get_status_text</span><span class="op">,</span> <span class="nam">STATUS_ICONS</span><span class="op">,</span> <span class="nam">GOLF_BLUE</span><span class="op">,</span> <span class="nam">GOLF_GREEN</span><span class="op">,</span> <span class="nam">GOLF_ORANGE</span>&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="key">from</span> <span class="nam">golf</span><span class="op">.</span><span class="nam">core</span><span class="op">.</span><span class="nam">config</span> <span class="key">import</span> <span class="nam">Settings</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">&nbsp;</span><span class="r"></span></p>
98
+ <p class="mis show_mis"><span class="n"><a id="t16" href="#t16">16</a></span><span class="t"><span class="nam">console</span> <span class="op">=</span> <span class="nam">Console</span><span class="op">(</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">&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">&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="key">def</span> <span class="nam">run_server</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">project_path</span><span class="op">:</span> <span class="nam">Path</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">settings</span><span class="op">:</span> <span class="nam">Settings</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="nam">dist_dir</span><span class="op">:</span> <span class="nam">Path</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="key">None</span><span class="op">,</span>&nbsp;</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="nam">host</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>
106
+ <p class="pln"><span class="n"><a id="t24" href="#t24">24</a></span><span class="t"> <span class="nam">port</span><span class="op">:</span> <span class="nam">int</span> <span class="op">|</span> <span class="key">None</span> <span class="op">=</span> <span class="key">None</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="op">)</span> <span class="op">-></span> <span class="nam">int</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="str">"""Run the built FastMCP server.</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">&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="str"> Args:</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="str"> project_path: Path to the project root</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"><span class="str"> settings: Project settings</span>&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"> dist_dir: Path to the directory containing the built server</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"> (defaults to project_path/dist)</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"> host: Host to bind the server to (overrides settings)</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"> port: Port to bind the server to (overrides settings)</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"> Returns:</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"> Process return code</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"> """</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="com"># Set default dist directory if not specified</span>&nbsp;</span><span class="r"></span></p>
122
+ <p class="mis show_mis"><span class="n"><a id="t40" href="#t40">40</a></span><span class="t"> <span class="key">if</span> <span class="nam">dist_dir</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
123
+ <p class="mis show_mis"><span class="n"><a id="t41" href="#t41">41</a></span><span class="t"> <span class="nam">dist_dir</span> <span class="op">=</span> <span class="nam">project_path</span> <span class="op">/</span> <span class="str">"dist"</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">&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"># Check if server file exists</span>&nbsp;</span><span class="r"></span></p>
126
+ <p class="mis show_mis"><span class="n"><a id="t44" href="#t44">44</a></span><span class="t"> <span class="nam">server_path</span> <span class="op">=</span> <span class="nam">dist_dir</span> <span class="op">/</span> <span class="str">"server.py"</span>&nbsp;</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="key">if</span> <span class="key">not</span> <span class="nam">server_path</span><span class="op">.</span><span class="nam">exists</span><span class="op">(</span><span class="op">)</span><span class="op">:</span>&nbsp;</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="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"error"</span><span class="op">,</span> <span class="str">f"Server file {server_path} not found"</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
129
+ <p class="mis show_mis"><span class="n"><a id="t47" href="#t47">47</a></span><span class="t"> <span class="key">return</span> <span class="num">1</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">&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="com"># Display server startup header</span>&nbsp;</span><span class="r"></span></p>
132
+ <p class="mis show_mis"><span class="n"><a id="t50" href="#t50">50</a></span><span class="t"> <span class="nam">create_command_header</span><span class="op">(</span><span class="str">"Starting Server"</span><span class="op">,</span> <span class="str">f"{settings.name}"</span><span class="op">,</span> <span class="nam">console</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">&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="com"># Show server info with flashy styling</span>&nbsp;</span><span class="r"></span></p>
135
+ <p class="mis show_mis"><span class="n"><a id="t53" href="#t53">53</a></span><span class="t"> <span class="nam">server_host</span> <span class="op">=</span> <span class="nam">host</span> <span class="key">or</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">host</span> <span class="key">or</span> <span class="str">"localhost"</span>&nbsp;</span><span class="r"></span></p>
136
+ <p class="mis show_mis"><span class="n"><a id="t54" href="#t54">54</a></span><span class="t"> <span class="nam">server_port</span> <span class="op">=</span> <span class="nam">port</span> <span class="key">or</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">port</span> <span class="key">or</span> <span class="num">3000</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">&nbsp;</span><span class="r"></span></p>
138
+ <p class="mis show_mis"><span class="n"><a id="t56" href="#t56">56</a></span><span class="t"> <span class="nam">server_content</span> <span class="op">=</span> <span class="nam">Text</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
139
+ <p class="mis show_mis"><span class="n"><a id="t57" href="#t57">57</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">"&#128640; "</span><span class="op">,</span> <span class="nam">style</span><span class="op">=</span><span class="str">f"bold {GOLF_ORANGE}"</span><span class="op">)</span>&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="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">f"{STATUS_ICONS['server']} Server starting on "</span><span class="op">,</span> <span class="nam">style</span><span class="op">=</span><span class="str">f"bold {GOLF_BLUE}"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
141
+ <p class="mis show_mis"><span class="n"><a id="t59" href="#t59">59</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">f"http://{server_host}:{server_port}"</span><span class="op">,</span> <span class="nam">style</span><span class="op">=</span><span class="str">f"bold {GOLF_GREEN}"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
142
+ <p class="mis show_mis"><span class="n"><a id="t60" href="#t60">60</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">" &#128640;"</span><span class="op">,</span> <span class="nam">style</span><span class="op">=</span><span class="str">f"bold {GOLF_ORANGE}"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
143
+ <p class="mis show_mis"><span class="n"><a id="t61" href="#t61">61</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">"\n"</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">&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="com"># Add telemetry status indicator</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">if</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">opentelemetry_enabled</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
147
+ <p class="mis show_mis"><span class="n"><a id="t65" href="#t65">65</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">"&#128202; Golf telemetry enabled"</span><span class="op">,</span> <span class="nam">style</span><span class="op">=</span><span class="str">f"dim {GOLF_BLUE}"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
148
+ <p class="mis show_mis"><span class="n"><a id="t66" href="#t66">66</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">"\n"</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">&nbsp;</span><span class="r"></span></p>
150
+ <p class="mis show_mis"><span class="n"><a id="t68" href="#t68">68</a></span><span class="t"> <span class="nam">server_content</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">"&#9889; Press Ctrl+C to stop &#9889;"</span><span class="op">,</span> <span class="nam">style</span><span class="op">=</span><span class="str">f"dim {GOLF_ORANGE}"</span><span class="op">)</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="mis show_mis"><span class="n"><a id="t70" href="#t70">70</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</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="nam">Panel</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="nam">Align</span><span class="op">.</span><span class="nam">center</span><span class="op">(</span><span class="nam">server_content</span><span class="op">)</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="nam">border_style</span><span class="op">=</span><span class="nam">GOLF_BLUE</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="nam">padding</span><span class="op">=</span><span class="op">(</span><span class="num">1</span><span class="op">,</span> <span class="num">2</span><span class="op">)</span><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"> <span class="nam">title</span><span class="op">=</span><span class="str">"[bold]&#127760; SERVER READY &#127760;[/bold]"</span><span class="op">,</span>&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="nam">title_align</span><span class="op">=</span><span class="str">"center"</span><span class="op">,</span>&nbsp;</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="op">)</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"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
161
+ <p class="mis show_mis"><span class="n"><a id="t79" href="#t79">79</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
162
+ <p class="pln"><span class="n"><a id="t80" href="#t80">80</a></span><span class="t">&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="com"># Prepare environment variables</span>&nbsp;</span><span class="r"></span></p>
164
+ <p class="mis show_mis"><span class="n"><a id="t82" href="#t82">82</a></span><span class="t"> <span class="nam">env</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">.</span><span class="nam">copy</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
165
+ <p class="mis show_mis"><span class="n"><a id="t83" href="#t83">83</a></span><span class="t"> <span class="key">if</span> <span class="nam">host</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
166
+ <p class="mis show_mis"><span class="n"><a id="t84" href="#t84">84</a></span><span class="t"> <span class="nam">env</span><span class="op">[</span><span class="str">"HOST"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">host</span>&nbsp;</span><span class="r"></span></p>
167
+ <p class="mis show_mis"><span class="n"><a id="t85" href="#t85">85</a></span><span class="t"> <span class="key">elif</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">host</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
168
+ <p class="mis show_mis"><span class="n"><a id="t86" href="#t86">86</a></span><span class="t"> <span class="nam">env</span><span class="op">[</span><span class="str">"HOST"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">host</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">&nbsp;</span><span class="r"></span></p>
170
+ <p class="mis show_mis"><span class="n"><a id="t88" href="#t88">88</a></span><span class="t"> <span class="key">if</span> <span class="nam">port</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
171
+ <p class="mis show_mis"><span class="n"><a id="t89" href="#t89">89</a></span><span class="t"> <span class="nam">env</span><span class="op">[</span><span class="str">"PORT"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">port</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
172
+ <p class="mis show_mis"><span class="n"><a id="t90" href="#t90">90</a></span><span class="t"> <span class="key">elif</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">port</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
173
+ <p class="mis show_mis"><span class="n"><a id="t91" href="#t91">91</a></span><span class="t"> <span class="nam">env</span><span class="op">[</span><span class="str">"PORT"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">str</span><span class="op">(</span><span class="nam">settings</span><span class="op">.</span><span class="nam">port</span><span class="op">)</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">&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"> <span class="com"># Run the server</span>&nbsp;</span><span class="r"></span></p>
176
+ <p class="mis show_mis"><span class="n"><a id="t94" href="#t94">94</a></span><span class="t"> <span class="key">try</span><span class="op">:</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="com"># Using subprocess to properly handle signals (Ctrl+C)</span>&nbsp;</span><span class="r"></span></p>
178
+ <p class="mis show_mis"><span class="n"><a id="t96" href="#t96">96</a></span><span class="t"> <span class="nam">process</span> <span class="op">=</span> <span class="nam">subprocess</span><span class="op">.</span><span class="nam">run</span><span class="op">(</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="op">[</span><span class="nam">sys</span><span class="op">.</span><span class="nam">executable</span><span class="op">,</span> <span class="nam">str</span><span class="op">(</span><span class="nam">server_path</span><span class="op">)</span><span class="op">]</span><span class="op">,</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="nam">cwd</span><span class="op">=</span><span class="nam">dist_dir</span><span class="op">,</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="nam">env</span><span class="op">=</span><span class="nam">env</span><span class="op">,</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="op">)</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">&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"> <span class="com"># Provide more context about the exit</span>&nbsp;</span><span class="r"></span></p>
185
+ <p class="mis show_mis"><span class="n"><a id="t103" href="#t103">103</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="op">)</span>&nbsp;</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="key">if</span> <span class="nam">process</span><span class="op">.</span><span class="nam">returncode</span> <span class="op">==</span> <span class="num">0</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
187
+ <p class="mis show_mis"><span class="n"><a id="t105" href="#t105">105</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"success"</span><span class="op">,</span> <span class="str">"Server stopped successfully"</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
188
+ <p class="mis show_mis"><span class="n"><a id="t106" href="#t106">106</a></span><span class="t"> <span class="key">elif</span> <span class="nam">process</span><span class="op">.</span><span class="nam">returncode</span> <span class="op">==</span> <span class="num">130</span><span class="op">:</span>&nbsp;</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">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"info"</span><span class="op">,</span> <span class="str">"Server stopped by user interrupt (Ctrl+C)"</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
190
+ <p class="mis show_mis"><span class="n"><a id="t108" href="#t108">108</a></span><span class="t"> <span class="key">elif</span> <span class="nam">process</span><span class="op">.</span><span class="nam">returncode</span> <span class="op">==</span> <span class="num">143</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
191
+ <p class="mis show_mis"><span class="n"><a id="t109" href="#t109">109</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"info"</span><span class="op">,</span> <span class="str">"Server stopped by SIGTERM (graceful shutdown)"</span><span class="op">)</span><span class="op">)</span>&nbsp;</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">elif</span> <span class="nam">process</span><span class="op">.</span><span class="nam">returncode</span> <span class="op">==</span> <span class="num">137</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
193
+ <p class="mis show_mis"><span class="n"><a id="t111" href="#t111">111</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"warning"</span><span class="op">,</span> <span class="str">"Server stopped by SIGKILL (forced shutdown)"</span><span class="op">)</span><span class="op">)</span>&nbsp;</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">elif</span> <span class="nam">process</span><span class="op">.</span><span class="nam">returncode</span> <span class="key">in</span> <span class="op">[</span><span class="num">1</span><span class="op">,</span> <span class="num">2</span><span class="op">]</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
195
+ <p class="mis show_mis"><span class="n"><a id="t113" href="#t113">113</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"error"</span><span class="op">,</span> <span class="str">f"Server exited with error code {process.returncode}"</span><span class="op">)</span><span class="op">)</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="key">else</span><span class="op">:</span>&nbsp;</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="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"warning"</span><span class="op">,</span> <span class="str">f"Server exited with code {process.returncode}"</span><span class="op">)</span><span class="op">)</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">&nbsp;</span><span class="r"></span></p>
199
+ <p class="mis show_mis"><span class="n"><a id="t117" href="#t117">117</a></span><span class="t"> <span class="key">return</span> <span class="nam">process</span><span class="op">.</span><span class="nam">returncode</span>&nbsp;</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">except</span> <span class="nam">KeyboardInterrupt</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
201
+ <p class="mis show_mis"><span class="n"><a id="t119" href="#t119">119</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
202
+ <p class="mis show_mis"><span class="n"><a id="t120" href="#t120">120</a></span><span class="t"> <span class="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"info"</span><span class="op">,</span> <span class="str">"Server stopped by user (Ctrl+C)"</span><span class="op">)</span><span class="op">)</span>&nbsp;</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="num">130</span> <span class="com"># Standard exit code for SIGINT</span>&nbsp;</span><span class="r"></span></p>
204
+ <p class="mis show_mis"><span class="n"><a id="t122" href="#t122">122</a></span><span class="t"> <span class="key">except</span> <span class="nam">Exception</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span>&nbsp;</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="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="op">)</span>&nbsp;</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="nam">console</span><span class="op">.</span><span class="nam">print</span><span class="op">(</span><span class="nam">get_status_text</span><span class="op">(</span><span class="str">"error"</span><span class="op">,</span> <span class="str">f"Error running server: {e}"</span><span class="op">)</span><span class="op">)</span>&nbsp;</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">return</span> <span class="num">1</span>&nbsp;</span><span class="r"></span></p>
208
+ </main>
209
+ <footer>
210
+ <div class="content">
211
+ <p>
212
+ <a class="nav" href="z_6cadab9ec0df475d_init_py.html">&#xab; prev</a> &nbsp; &nbsp;
213
+ <a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
214
+ <a class="nav" href="z_7ba499ed22986217___init___py.html">&#xbb; next</a>
215
+ &nbsp; &nbsp; &nbsp;
216
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
217
+ created at 2025-08-16 18:46 +0200
218
+ </p>
219
+ </div>
220
+ </footer>
221
+ </body>
222
+ </html>
@@ -0,0 +1,106 @@
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/__init__.py: 100%</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/__init__.py</b>:
15
+ <span class="pc_cov">100%</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">5 statements &nbsp;</span>
58
+ <button type="button" class="run button_toggle_run" value="run" data-shortcut="r" title="Toggle lines run">5<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">0<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="index.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_6fcdee0582ba84e4__endpoints_fallback_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="run"><span class="n"><a id="t1" href="#t1">1</a></span><span class="t"><span class="nam">__version__</span> <span class="op">=</span> <span class="str">"0.2.0"</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="com"># Import endpoints with fallback for dev mode</span>&nbsp;</span><span class="r"></span></p>
86
+ <p class="run"><span class="n"><a id="t4" href="#t4">4</a></span><span class="t"><span class="key">try</span><span class="op">:</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="com"># In built wheels, this exists (generated from _endpoints.py.in)</span>&nbsp;</span><span class="r"></span></p>
88
+ <p class="run"><span class="n"><a id="t6" href="#t6">6</a></span><span class="t"> <span class="key">from</span> <span class="op">.</span> <span class="key">import</span> <span class="nam">_endpoints</span>&nbsp;</span><span class="r"></span></p>
89
+ <p class="run"><span class="n"><a id="t7" href="#t7">7</a></span><span class="t"><span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
90
+ <p class="pln"><span class="n"><a id="t8" href="#t8">8</a></span><span class="t"> <span class="com"># In editable/dev installs, fall back to env-based values</span>&nbsp;</span><span class="r"></span></p>
91
+ <p class="run"><span class="n"><a id="t9" href="#t9">9</a></span><span class="t"> <span class="key">from</span> <span class="op">.</span> <span class="key">import</span> <span class="nam">_endpoints_fallback</span> <span class="key">as</span> <span class="nam">_endpoints</span>&nbsp;</span><span class="r"></span></p>
92
+ </main>
93
+ <footer>
94
+ <div class="content">
95
+ <p>
96
+ <a class="nav" href="index.html">&#xab; prev</a> &nbsp; &nbsp;
97
+ <a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
98
+ <a class="nav" href="z_6fcdee0582ba84e4__endpoints_fallback_py.html">&#xbb; next</a>
99
+ &nbsp; &nbsp; &nbsp;
100
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
101
+ created at 2025-08-16 18:46 +0200
102
+ </p>
103
+ </div>
104
+ </footer>
105
+ </body>
106
+ </html>
@@ -0,0 +1,107 @@
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/_endpoints_fallback.py: 100%</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/_endpoints_fallback.py</b>:
15
+ <span class="pc_cov">100%</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">3 statements &nbsp;</span>
58
+ <button type="button" class="run button_toggle_run" value="run" data-shortcut="r" title="Toggle lines run">3<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">0<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___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___init___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">"""Fallback endpoints for development/editable installs."""</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="run"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="key">import</span> <span class="nam">os</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">&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="com"># These are used when the generated _endpoints.py doesn't exist (dev mode)</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="com"># or when environment variables override the built-in values</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="run"><span class="n"><a id="t8" href="#t8">8</a></span><span class="t"><span class="nam">PLATFORM_API_URL</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">getenv</span><span class="op">(</span><span class="str">"GOLF_PLATFORM_API_URL"</span><span class="op">,</span> <span class="str">"http://localhost:8000/api/resources"</span><span class="op">)</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="run"><span class="n"><a id="t10" href="#t10">10</a></span><span class="t"><span class="nam">OTEL_ENDPOINT</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">getenv</span><span class="op">(</span><span class="str">"GOLF_OTEL_ENDPOINT"</span><span class="op">,</span> <span class="str">"http://localhost:4318/v1/traces"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
93
+ </main>
94
+ <footer>
95
+ <div class="content">
96
+ <p>
97
+ <a class="nav" href="z_6fcdee0582ba84e4___init___py.html">&#xab; prev</a> &nbsp; &nbsp;
98
+ <a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
99
+ <a class="nav" href="z_1c9a91c0e91c8496___init___py.html">&#xbb; next</a>
100
+ &nbsp; &nbsp; &nbsp;
101
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
102
+ created at 2025-08-16 18:46 +0200
103
+ </p>
104
+ </div>
105
+ </footer>
106
+ </body>
107
+ </html>