tan-cli 0.7.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.
Files changed (330) hide show
  1. tan/__init__.py +0 -0
  2. tan/__main__.py +120 -0
  3. tan/cli.py +939 -0
  4. tan/command_table.py +265 -0
  5. tan/commands/__init__.py +8 -0
  6. tan/commands/bootstrap_cmd.py +4856 -0
  7. tan/commands/bootstrap_patches.py +164 -0
  8. tan/commands/bootstrap_toolchain_fetch.py +155 -0
  9. tan/commands/bootstrap_toolchain_pin.py +36 -0
  10. tan/commands/build/__init__.py +1 -0
  11. tan/commands/build/configure_inputs.py +277 -0
  12. tan/commands/build/execute.py +1852 -0
  13. tan/commands/build/host_python.py +59 -0
  14. tan/commands/build/link_stale.py +78 -0
  15. tan/commands/build/manifest.py +428 -0
  16. tan/commands/build/materialise.py +81 -0
  17. tan/commands/build/token_substitution.py +381 -0
  18. tan/commands/build/toolchain.py +482 -0
  19. tan/commands/build/user_defines_wipe.py +115 -0
  20. tan/commands/build/workspace_patches.py +65 -0
  21. tan/commands/build_cmd.py +2236 -0
  22. tan/commands/build_output.py +331 -0
  23. tan/commands/clean_cmd.py +1183 -0
  24. tan/commands/completion_cmd.py +786 -0
  25. tan/commands/debug_config_cmd.py +2425 -0
  26. tan/commands/diff_cmd.py +940 -0
  27. tan/commands/doctor_cmd.py +4767 -0
  28. tan/commands/examples_cmd.py +644 -0
  29. tan/commands/explain_cmd.py +1319 -0
  30. tan/commands/faultdecode_cmd.py +931 -0
  31. tan/commands/flash_atoc_guard.py +240 -0
  32. tan/commands/flash_cmd.py +5731 -0
  33. tan/commands/flash_mram_guard.py +150 -0
  34. tan/commands/flash_ram.py +578 -0
  35. tan/commands/flash_raw.py +583 -0
  36. tan/commands/generate_cmd.py +1456 -0
  37. tan/commands/image_cmd.py +753 -0
  38. tan/commands/init_cmd.py +1740 -0
  39. tan/commands/inspect_cmd.py +377 -0
  40. tan/commands/kconfig_cmd.py +734 -0
  41. tan/commands/model_cmd.py +1514 -0
  42. tan/commands/model_device_cmd.py +351 -0
  43. tan/commands/model_device_live.py +234 -0
  44. tan/commands/model_host_cmd.py +430 -0
  45. tan/commands/model_zoo_cmd.py +363 -0
  46. tan/commands/monitor_actions.py +125 -0
  47. tan/commands/monitor_cmd.py +626 -0
  48. tan/commands/monitor_session.py +505 -0
  49. tan/commands/new_som_cmd.py +1522 -0
  50. tan/commands/pinmux_cmd.py +568 -0
  51. tan/commands/presets_cmd.py +1123 -0
  52. tan/commands/probe_cmd.py +421 -0
  53. tan/commands/reset_cmd.py +354 -0
  54. tan/commands/reset_confirm.py +168 -0
  55. tan/commands/run_cmd.py +637 -0
  56. tan/commands/scaffold_cmd.py +490 -0
  57. tan/commands/sdk_cmd.py +1723 -0
  58. tan/commands/size_cmd.py +1020 -0
  59. tan/commands/support_bundle_cmd.py +1073 -0
  60. tan/commands/trace_cmd.py +341 -0
  61. tan/commands/validate_cmd.py +2009 -0
  62. tan/commands/west_forward_cmd.py +736 -0
  63. tan/commands/workspace_patch_check.py +296 -0
  64. tan/core/__init__.py +1 -0
  65. tan/core/alp_conf_pregen.py +100 -0
  66. tan/core/artifact_provenance.py +240 -0
  67. tan/core/atoc_guard.py +276 -0
  68. tan/core/atoc_guard_messages.py +232 -0
  69. tan/core/atoc_replacement.py +118 -0
  70. tan/core/atomic_write.py +178 -0
  71. tan/core/board_context.py +351 -0
  72. tan/core/board_diagnostic.py +111 -0
  73. tan/core/board_files.py +221 -0
  74. tan/core/board_validator.py +542 -0
  75. tan/core/board_validator_compat.py +196 -0
  76. tan/core/board_validator_run.py +129 -0
  77. tan/core/board_validator_schema.py +186 -0
  78. tan/core/board_validator_skew.py +46 -0
  79. tan/core/board_yaml_edit.py +295 -0
  80. tan/core/board_yaml_pos.py +118 -0
  81. tan/core/bootstrap.py +2572 -0
  82. tan/core/build_plan.py +625 -0
  83. tan/core/consent.py +104 -0
  84. tan/core/console_filter.py +245 -0
  85. tan/core/debug_launch.py +1803 -0
  86. tan/core/devicetree_lint.py +168 -0
  87. tan/core/dir_removal.py +229 -0
  88. tan/core/doctor_git.py +172 -0
  89. tan/core/doctor_libraries.py +253 -0
  90. tan/core/doctor_render.py +185 -0
  91. tan/core/doctor_scope.py +66 -0
  92. tan/core/doctor_setools.py +237 -0
  93. tan/core/doctor_stale.py +180 -0
  94. tan/core/document_guards.py +723 -0
  95. tan/core/dp_id.py +97 -0
  96. tan/core/elf_load.py +63 -0
  97. tan/core/error_catalog.py +171 -0
  98. tan/core/example_catalog.py +499 -0
  99. tan/core/example_facets.py +151 -0
  100. tan/core/faultdecode.py +521 -0
  101. tan/core/flash_plan.py +2501 -0
  102. tan/core/flow_d_report.py +381 -0
  103. tan/core/flow_d_uptime.py +164 -0
  104. tan/core/fs_confine.py +130 -0
  105. tan/core/global_flags.py +230 -0
  106. tan/core/host_python.py +210 -0
  107. tan/core/image_bundle.py +247 -0
  108. tan/core/inert.py +147 -0
  109. tan/core/jlink_binary.py +128 -0
  110. tan/core/jlink_probe.py +481 -0
  111. tan/core/jsonc_splice.py +404 -0
  112. tan/core/launch_provenance.py +257 -0
  113. tan/core/link_refusal.py +76 -0
  114. tan/core/metadata_schema.py +376 -0
  115. tan/core/model_check.py +227 -0
  116. tan/core/model_device.py +449 -0
  117. tan/core/model_doctor.py +198 -0
  118. tan/core/model_host.py +48 -0
  119. tan/core/model_list.py +112 -0
  120. tan/core/model_zoo.py +353 -0
  121. tan/core/module_template.py +340 -0
  122. tan/core/mram_link.py +87 -0
  123. tan/core/new_som_ospi.py +94 -0
  124. tan/core/os_class.py +159 -0
  125. tan/core/patch_paths.py +87 -0
  126. tan/core/pending.py +40 -0
  127. tan/core/plain_zephyr_plan.py +138 -0
  128. tan/core/plan_exec.py +373 -0
  129. tan/core/plan_tokens.py +600 -0
  130. tan/core/probe.py +155 -0
  131. tan/core/probe_plan.py +237 -0
  132. tan/core/proxy.py +168 -0
  133. tan/core/publish.py +31 -0
  134. tan/core/python_floor.py +178 -0
  135. tan/core/ram_run.py +694 -0
  136. tan/core/ram_watch.py +231 -0
  137. tan/core/raw_write.py +160 -0
  138. tan/core/reset_plan.py +56 -0
  139. tan/core/run.py +161 -0
  140. tan/core/scaffold.py +2203 -0
  141. tan/core/scaffold_selftest_identity.py +225 -0
  142. tan/core/sdk_default_registry.py +565 -0
  143. tan/core/sdk_discovery.py +996 -0
  144. tan/core/sdk_removal.py +465 -0
  145. tan/core/serial_actions.py +175 -0
  146. tan/core/serial_capture.py +185 -0
  147. tan/core/serial_url.py +45 -0
  148. tan/core/setools.py +608 -0
  149. tan/core/setools_scratch.py +243 -0
  150. tan/core/shapes.py +194 -0
  151. tan/core/size.py +610 -0
  152. tan/core/som_buildability.py +204 -0
  153. tan/core/som_schema_version.py +62 -0
  154. tan/core/subprocess_env.py +201 -0
  155. tan/core/sysbuild_image.py +94 -0
  156. tan/core/system_manifest.py +827 -0
  157. tan/core/text_layout.py +73 -0
  158. tan/core/timestamp.py +182 -0
  159. tan/core/tool_lookup.py +383 -0
  160. tan/core/toolchain_pin.py +117 -0
  161. tan/core/toolchain_provision.py +1224 -0
  162. tan/core/trusted_path.py +134 -0
  163. tan/core/uboot_breakin.py +154 -0
  164. tan/core/uri_reference.py +415 -0
  165. tan/core/user_defines.py +152 -0
  166. tan/core/venv.py +332 -0
  167. tan/core/west_patches.py +143 -0
  168. tan/core/west_workspace_refusal.py +159 -0
  169. tan/core/zephyr_env.py +124 -0
  170. tan/env.py +185 -0
  171. tan/envelope.py +647 -0
  172. tan/exit_codes.py +12 -0
  173. tan/lazy_typer.py +185 -0
  174. tan/model/__init__.py +2 -0
  175. tan/model/_gen_fixture.py +132 -0
  176. tan/model/adapters/__init__.py +116 -0
  177. tan/model/adapters/cpu.py +26 -0
  178. tan/model/adapters/deepx.py +94 -0
  179. tan/model/adapters/drpai.py +242 -0
  180. tan/model/adapters/ethos_u.py +951 -0
  181. tan/model/adapters/executorch.py +55 -0
  182. tan/model/analyze.py +694 -0
  183. tan/model/build.py +304 -0
  184. tan/model/check.py +682 -0
  185. tan/model/manifest.py +625 -0
  186. tan/model/measure.py +216 -0
  187. tan/model/npu_ops_validate.py +130 -0
  188. tan/model/package.py +125 -0
  189. tan/model/perf.py +635 -0
  190. tan/model/perf_apply.py +721 -0
  191. tan/model/prep.py +193 -0
  192. tan/model/sram_fit.py +502 -0
  193. tan/model/targets.py +374 -0
  194. tan/model/tensorio.py +287 -0
  195. tan/net.py +73 -0
  196. tan/output_format.py +213 -0
  197. tan/planner/__init__.py +219 -0
  198. tan/planner/aperture.py +202 -0
  199. tan/planner/buildplan.py +1092 -0
  200. tan/planner/camera_owner.py +192 -0
  201. tan/planner/cameras.py +132 -0
  202. tan/planner/carveout.py +755 -0
  203. tan/planner/cli.py +274 -0
  204. tan/planner/headers.py +315 -0
  205. tan/planner/kconfig.py +2435 -0
  206. tan/planner/kconfig_symbols.py +473 -0
  207. tan/planner/libraries.py +677 -0
  208. tan/planner/link_target.py +237 -0
  209. tan/planner/linux_ownership.py +216 -0
  210. tan/planner/loader.py +1525 -0
  211. tan/planner/manifest.py +116 -0
  212. tan/planner/memory.py +161 -0
  213. tan/planner/memregion.py +56 -0
  214. tan/planner/models.py +533 -0
  215. tan/planner/orchestrator.py +874 -0
  216. tan/planner/ownership.py +203 -0
  217. tan/planner/partition.py +1160 -0
  218. tan/planner/paths.py +32 -0
  219. tan/planner/plain_slice.py +139 -0
  220. tan/planner/project_emit/__init__.py +60 -0
  221. tan/planner/project_emit/bom_netlist.py +375 -0
  222. tan/planner/project_emit/dts.py +580 -0
  223. tan/planner/project_emit/hw_info.py +221 -0
  224. tan/planner/project_emit/native_sim.py +136 -0
  225. tan/planner/project_emit/west_libs.py +213 -0
  226. tan/planner/project_loader.py +264 -0
  227. tan/planner/sdk_capability.py +203 -0
  228. tan/planner/sdk_compat.py +395 -0
  229. tan/planner/secure.py +350 -0
  230. tan/planner/slugs.py +394 -0
  231. tan/planner/som_metadata.py +325 -0
  232. tan/planner/strict_loaders.py +131 -0
  233. tan/planner/template.py +1037 -0
  234. tan/planner/template_pins.py +535 -0
  235. tan/planner/template_rewrite.py +714 -0
  236. tan/planner/topology.py +208 -0
  237. tan/planner/validate.py +365 -0
  238. tan/planner/whole_device_alias.py +67 -0
  239. tan/planner/zephyr_board.py +3510 -0
  240. tan/planner_cli.py +97 -0
  241. tan/planner_emit.py +617 -0
  242. tan/planner_root.py +119 -0
  243. tan/soc_ref.py +58 -0
  244. tan/templates/__init__.py +34 -0
  245. tan/templates/vendored/MANIFEST.md +1862 -0
  246. tan/templates/vendored/diagnostics/E1M-AEN801/CMakeLists.txt +8 -0
  247. tan/templates/vendored/diagnostics/E1M-AEN801/README.md +112 -0
  248. tan/templates/vendored/diagnostics/E1M-AEN801/board.yaml +38 -0
  249. tan/templates/vendored/diagnostics/E1M-AEN801/boards/native_sim_native_64.conf +11 -0
  250. tan/templates/vendored/diagnostics/E1M-AEN801/boards/native_sim_native_64.overlay +29 -0
  251. tan/templates/vendored/diagnostics/E1M-AEN801/prj.conf +5 -0
  252. tan/templates/vendored/diagnostics/E1M-AEN801/src/main.c +266 -0
  253. tan/templates/vendored/diagnostics/E1M-AEN801/testcase.yaml +53 -0
  254. tan/templates/vendored/diagnostics/E1M-V2N101/CMakeLists.txt +8 -0
  255. tan/templates/vendored/diagnostics/E1M-V2N101/README.md +112 -0
  256. tan/templates/vendored/diagnostics/E1M-V2N101/board.yaml +38 -0
  257. tan/templates/vendored/diagnostics/E1M-V2N101/boards/native_sim_native_64.conf +11 -0
  258. tan/templates/vendored/diagnostics/E1M-V2N101/boards/native_sim_native_64.overlay +29 -0
  259. tan/templates/vendored/diagnostics/E1M-V2N101/prj.conf +5 -0
  260. tan/templates/vendored/diagnostics/E1M-V2N101/src/main.c +266 -0
  261. tan/templates/vendored/diagnostics/E1M-V2N101/testcase.yaml +53 -0
  262. tan/templates/vendored/edge-ai/E1M-AEN801/CMakeLists.txt +10 -0
  263. tan/templates/vendored/edge-ai/E1M-AEN801/README.md +75 -0
  264. tan/templates/vendored/edge-ai/E1M-AEN801/board.yaml +38 -0
  265. tan/templates/vendored/edge-ai/E1M-AEN801/prj.conf +8 -0
  266. tan/templates/vendored/edge-ai/E1M-AEN801/src/cold_chain.c +371 -0
  267. tan/templates/vendored/edge-ai/E1M-AEN801/src/cold_chain.h +178 -0
  268. tan/templates/vendored/edge-ai/E1M-AEN801/src/main.c +373 -0
  269. tan/templates/vendored/edge-ai/E1M-AEN801/testcase.yaml +62 -0
  270. tan/templates/vendored/edge-ai/E1M-V2N101/CMakeLists.txt +10 -0
  271. tan/templates/vendored/edge-ai/E1M-V2N101/README.md +75 -0
  272. tan/templates/vendored/edge-ai/E1M-V2N101/board.yaml +37 -0
  273. tan/templates/vendored/edge-ai/E1M-V2N101/prj.conf +8 -0
  274. tan/templates/vendored/edge-ai/E1M-V2N101/src/cold_chain.c +371 -0
  275. tan/templates/vendored/edge-ai/E1M-V2N101/src/cold_chain.h +178 -0
  276. tan/templates/vendored/edge-ai/E1M-V2N101/src/main.c +373 -0
  277. tan/templates/vendored/edge-ai/E1M-V2N101/testcase.yaml +62 -0
  278. tan/templates/vendored/iot/E1M-AEN801/CMakeLists.txt +14 -0
  279. tan/templates/vendored/iot/E1M-AEN801/README.md +103 -0
  280. tan/templates/vendored/iot/E1M-AEN801/board.yaml +69 -0
  281. tan/templates/vendored/iot/E1M-AEN801/prj.conf +15 -0
  282. tan/templates/vendored/iot/E1M-AEN801/src/cc3501e_bridge.c +196 -0
  283. tan/templates/vendored/iot/E1M-AEN801/src/cc3501e_bridge.h +173 -0
  284. tan/templates/vendored/iot/E1M-AEN801/src/main.c +262 -0
  285. tan/templates/vendored/iot/E1M-AEN801/testcase.yaml +68 -0
  286. tan/templates/vendored/minimal/E1M-AEN801/CMakeLists.txt +8 -0
  287. tan/templates/vendored/minimal/E1M-AEN801/README.md +108 -0
  288. tan/templates/vendored/minimal/E1M-AEN801/board.yaml +32 -0
  289. tan/templates/vendored/minimal/E1M-AEN801/prj.conf +8 -0
  290. tan/templates/vendored/minimal/E1M-AEN801/src/main.c +111 -0
  291. tan/templates/vendored/minimal/E1M-AEN801/testcase.yaml +49 -0
  292. tan/templates/vendored/minimal/E1M-V2N101/CMakeLists.txt +8 -0
  293. tan/templates/vendored/minimal/E1M-V2N101/README.md +108 -0
  294. tan/templates/vendored/minimal/E1M-V2N101/board.yaml +32 -0
  295. tan/templates/vendored/minimal/E1M-V2N101/prj.conf +8 -0
  296. tan/templates/vendored/minimal/E1M-V2N101/src/main.c +111 -0
  297. tan/templates/vendored/minimal/E1M-V2N101/testcase.yaml +49 -0
  298. tan/templates/vendored/multicore-mailbox/E1M-AEN801/CMakeLists.txt +8 -0
  299. tan/templates/vendored/multicore-mailbox/E1M-AEN801/README.md +120 -0
  300. tan/templates/vendored/multicore-mailbox/E1M-AEN801/board.yaml +57 -0
  301. tan/templates/vendored/multicore-mailbox/E1M-AEN801/boards/native_sim_native_64.overlay +40 -0
  302. tan/templates/vendored/multicore-mailbox/E1M-AEN801/peer/CMakeLists.txt +13 -0
  303. tan/templates/vendored/multicore-mailbox/E1M-AEN801/peer/main.c +171 -0
  304. tan/templates/vendored/multicore-mailbox/E1M-AEN801/peer/prj.conf +17 -0
  305. tan/templates/vendored/multicore-mailbox/E1M-AEN801/peer/testcase.yaml +23 -0
  306. tan/templates/vendored/multicore-mailbox/E1M-AEN801/prj.conf +22 -0
  307. tan/templates/vendored/multicore-mailbox/E1M-AEN801/src/main.c +185 -0
  308. tan/templates/vendored/multicore-mailbox/E1M-AEN801/testcase.yaml +26 -0
  309. tan/templates/vendored/sensor/E1M-AEN801/CMakeLists.txt +8 -0
  310. tan/templates/vendored/sensor/E1M-AEN801/README.md +112 -0
  311. tan/templates/vendored/sensor/E1M-AEN801/board.yaml +57 -0
  312. tan/templates/vendored/sensor/E1M-AEN801/boards/native_sim_native_64.conf +10 -0
  313. tan/templates/vendored/sensor/E1M-AEN801/boards/native_sim_native_64.overlay +28 -0
  314. tan/templates/vendored/sensor/E1M-AEN801/prj.conf +5 -0
  315. tan/templates/vendored/sensor/E1M-AEN801/src/main.c +186 -0
  316. tan/templates/vendored/sensor/E1M-AEN801/testcase.yaml +52 -0
  317. tan/templates/vendored/sensor/E1M-V2N101/CMakeLists.txt +8 -0
  318. tan/templates/vendored/sensor/E1M-V2N101/README.md +112 -0
  319. tan/templates/vendored/sensor/E1M-V2N101/board.yaml +57 -0
  320. tan/templates/vendored/sensor/E1M-V2N101/boards/native_sim_native_64.conf +10 -0
  321. tan/templates/vendored/sensor/E1M-V2N101/boards/native_sim_native_64.overlay +28 -0
  322. tan/templates/vendored/sensor/E1M-V2N101/prj.conf +5 -0
  323. tan/templates/vendored/sensor/E1M-V2N101/src/main.c +186 -0
  324. tan/templates/vendored/sensor/E1M-V2N101/testcase.yaml +52 -0
  325. tan/version.py +102 -0
  326. tan_cli-0.7.0.dist-info/METADATA +125 -0
  327. tan_cli-0.7.0.dist-info/RECORD +330 -0
  328. tan_cli-0.7.0.dist-info/WHEEL +5 -0
  329. tan_cli-0.7.0.dist-info/entry_points.txt +2 -0
  330. tan_cli-0.7.0.dist-info/top_level.txt +1 -0
tan/command_table.py ADDED
@@ -0,0 +1,265 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ """The registration table for every `tan` subcommand, with LAZY loaders.
3
+
4
+ Each ``_load_*`` function holds a plain static ``from tan.commands.x_cmd import x``
5
+ statement. That is deliberate: PyInstaller follows only the static import
6
+ graph, so a ``pkgutil``/``importlib`` registry would work from source and
7
+ produce a frozen ``tan`` that cannot find its own commands (see
8
+ ``tan.commands.__init__``) -- but an import inside a function body is still a
9
+ static import to PyInstaller's analysis. Running none of these functions until a
10
+ command is actually needed is what keeps ``tan --version`` and
11
+ ``tan <cmd> --help`` from importing the other ~30 command modules (tan-cli#1505).
12
+
13
+ ``COMMAND_TABLE`` order is the order the commands appear in ``--help`` and in
14
+ every derived tree walk; keep it as-is when adding a command (one loader
15
+ function plus one ``CommandSpec`` row).
16
+ """
17
+ from __future__ import annotations
18
+
19
+ from collections.abc import Callable
20
+ from typing import Any, NamedTuple
21
+
22
+ #: ``(callback, context_settings)`` -- `context_settings` is `None` unless the
23
+ #: command needs Click settings of its own (the three west forwarders).
24
+ Loaded = tuple[Callable[..., Any], dict[str, Any] | None]
25
+
26
+
27
+ class CommandSpec(NamedTuple):
28
+ name: str
29
+ rich_help_panel: str
30
+ load: Callable[[], Loaded]
31
+
32
+
33
+ def _load_bootstrap() -> Loaded:
34
+ from tan.commands.bootstrap_cmd import bootstrap # noqa: PLC0415
35
+
36
+ return bootstrap, None
37
+
38
+
39
+ def _load_build() -> Loaded:
40
+ from tan.commands.build_cmd import build # noqa: PLC0415
41
+
42
+ return build, None
43
+
44
+
45
+ def _load_clean() -> Loaded:
46
+ from tan.commands.clean_cmd import clean # noqa: PLC0415
47
+
48
+ return clean, None
49
+
50
+
51
+ def _load_completion() -> Loaded:
52
+ from tan.commands.completion_cmd import completion # noqa: PLC0415
53
+
54
+ return completion, None
55
+
56
+
57
+ def _load_debug_config() -> Loaded:
58
+ from tan.commands.debug_config_cmd import debug_config # noqa: PLC0415
59
+
60
+ return debug_config, None
61
+
62
+
63
+ def _load_diff() -> Loaded:
64
+ from tan.commands.diff_cmd import diff # noqa: PLC0415
65
+
66
+ return diff, None
67
+
68
+
69
+ def _load_doctor() -> Loaded:
70
+ from tan.commands.doctor_cmd import doctor # noqa: PLC0415
71
+
72
+ return doctor, None
73
+
74
+
75
+ def _load_examples() -> Loaded:
76
+ from tan.commands.examples_cmd import examples # noqa: PLC0415
77
+
78
+ return examples, None
79
+
80
+
81
+ def _load_explain() -> Loaded:
82
+ from tan.commands.explain_cmd import explain # noqa: PLC0415
83
+
84
+ return explain, None
85
+
86
+
87
+ def _load_faultdecode() -> Loaded:
88
+ from tan.commands.faultdecode_cmd import faultdecode # noqa: PLC0415
89
+
90
+ return faultdecode, None
91
+
92
+
93
+ def _load_flash() -> Loaded:
94
+ from tan.commands.flash_cmd import flash # noqa: PLC0415
95
+
96
+ return flash, None
97
+
98
+
99
+ def _load_generate() -> Loaded:
100
+ from tan.commands.generate_cmd import generate # noqa: PLC0415
101
+
102
+ return generate, None
103
+
104
+
105
+ def _load_image() -> Loaded:
106
+ from tan.commands.image_cmd import image # noqa: PLC0415
107
+
108
+ return image, None
109
+
110
+
111
+ def _load_init() -> Loaded:
112
+ from tan.commands.init_cmd import init # noqa: PLC0415
113
+
114
+ return init, None
115
+
116
+
117
+ def _load_inspect() -> Loaded:
118
+ from tan.commands.inspect_cmd import inspect # noqa: PLC0415
119
+
120
+ return inspect, None
121
+
122
+
123
+ def _load_kconfig() -> Loaded:
124
+ from tan.commands.kconfig_cmd import kconfig # noqa: PLC0415
125
+
126
+ return kconfig, None
127
+
128
+
129
+ def _load_lock() -> Loaded:
130
+ from tan.commands.west_forward_cmd import FORWARD_CONTEXT_SETTINGS, lock # noqa: PLC0415
131
+
132
+ return lock, FORWARD_CONTEXT_SETTINGS
133
+
134
+
135
+ def _load_migrate() -> Loaded:
136
+ from tan.commands.west_forward_cmd import FORWARD_CONTEXT_SETTINGS, migrate # noqa: PLC0415
137
+
138
+ return migrate, FORWARD_CONTEXT_SETTINGS
139
+
140
+
141
+ def _load_model() -> Loaded:
142
+ from tan.commands.model_cmd import model # noqa: PLC0415
143
+
144
+ return model, None
145
+
146
+
147
+ def _load_monitor() -> Loaded:
148
+ from tan.commands.monitor_cmd import monitor # noqa: PLC0415
149
+
150
+ return monitor, None
151
+
152
+
153
+ def _load_new_som() -> Loaded:
154
+ from tan.commands.new_som_cmd import new_som # noqa: PLC0415
155
+
156
+ return new_som, None
157
+
158
+
159
+ def _load_pinmux() -> Loaded:
160
+ from tan.commands.pinmux_cmd import pinmux # noqa: PLC0415
161
+
162
+ return pinmux, None
163
+
164
+
165
+ def _load_presets() -> Loaded:
166
+ from tan.commands.presets_cmd import presets # noqa: PLC0415
167
+
168
+ return presets, None
169
+
170
+
171
+ def _load_probe() -> Loaded:
172
+ from tan.commands.probe_cmd import probe # noqa: PLC0415
173
+
174
+ return probe, None
175
+
176
+
177
+ def _load_reset() -> Loaded:
178
+ from tan.commands.reset_cmd import reset # noqa: PLC0415
179
+
180
+ return reset, None
181
+
182
+
183
+ def _load_quality() -> Loaded:
184
+ from tan.commands.west_forward_cmd import FORWARD_CONTEXT_SETTINGS, quality # noqa: PLC0415
185
+
186
+ return quality, FORWARD_CONTEXT_SETTINGS
187
+
188
+
189
+ def _load_run() -> Loaded:
190
+ from tan.commands.run_cmd import run # noqa: PLC0415
191
+
192
+ return run, None
193
+
194
+
195
+ def _load_scaffold() -> Loaded:
196
+ from tan.commands.scaffold_cmd import scaffold # noqa: PLC0415
197
+
198
+ return scaffold, None
199
+
200
+
201
+ def _load_sdk() -> Loaded:
202
+ from tan.commands.sdk_cmd import sdk # noqa: PLC0415
203
+
204
+ return sdk, None
205
+
206
+
207
+ def _load_size() -> Loaded:
208
+ from tan.commands.size_cmd import size # noqa: PLC0415
209
+
210
+ return size, None
211
+
212
+
213
+ def _load_support_bundle() -> Loaded:
214
+ from tan.commands.support_bundle_cmd import support_bundle # noqa: PLC0415
215
+
216
+ return support_bundle, None
217
+
218
+
219
+ def _load_trace() -> Loaded:
220
+ from tan.commands.trace_cmd import trace # noqa: PLC0415
221
+
222
+ return trace, None
223
+
224
+
225
+ def _load_validate() -> Loaded:
226
+ from tan.commands.validate_cmd import validate # noqa: PLC0415
227
+
228
+ return validate, None
229
+
230
+
231
+ COMMAND_TABLE: tuple[CommandSpec, ...] = (
232
+ CommandSpec("bootstrap", "Setup", _load_bootstrap),
233
+ CommandSpec("build", "Build & run", _load_build),
234
+ CommandSpec("clean", "Build & run", _load_clean),
235
+ CommandSpec("completion", "Setup", _load_completion),
236
+ CommandSpec("debug-config", "Hardware", _load_debug_config),
237
+ CommandSpec("diff", "Inspect & author", _load_diff),
238
+ CommandSpec("doctor", "Setup", _load_doctor),
239
+ CommandSpec("examples", "Start a project", _load_examples),
240
+ CommandSpec("explain", "Start a project", _load_explain),
241
+ CommandSpec("faultdecode", "Hardware", _load_faultdecode),
242
+ CommandSpec("flash", "Hardware", _load_flash),
243
+ CommandSpec("generate", "Configure", _load_generate),
244
+ CommandSpec("image", "Build & run", _load_image),
245
+ CommandSpec("init", "Start a project", _load_init),
246
+ CommandSpec("inspect", "Inspect & author", _load_inspect),
247
+ CommandSpec("kconfig", "Configure", _load_kconfig),
248
+ CommandSpec("lock", "Configure", _load_lock),
249
+ CommandSpec("migrate", "Configure", _load_migrate),
250
+ CommandSpec("model", "Configure", _load_model),
251
+ CommandSpec("monitor", "Hardware", _load_monitor),
252
+ CommandSpec("new-som", "Inspect & author", _load_new_som),
253
+ CommandSpec("pinmux", "Inspect & author", _load_pinmux),
254
+ CommandSpec("presets", "Start a project", _load_presets),
255
+ CommandSpec("probe", "Hardware", _load_probe),
256
+ CommandSpec("reset", "Hardware", _load_reset),
257
+ CommandSpec("quality", "Configure", _load_quality),
258
+ CommandSpec("run", "Build & run", _load_run),
259
+ CommandSpec("scaffold", "Start a project", _load_scaffold),
260
+ CommandSpec("sdk", "Setup", _load_sdk),
261
+ CommandSpec("size", "Build & run", _load_size),
262
+ CommandSpec("support-bundle", "Inspect & author", _load_support_bundle),
263
+ CommandSpec("trace", "Inspect & author", _load_trace),
264
+ CommandSpec("validate", "Configure", _load_validate),
265
+ )
@@ -0,0 +1,8 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ """Command modules.
3
+
4
+ Register every command with a STATIC import (``from tan.commands.x import y``).
5
+ PyInstaller follows the static import graph only, so an ``importlib``/``pkgutil``
6
+ auto-discovery registry would work from source and produce a frozen `tan` that
7
+ cannot find its own commands -- see ``scripts/build_binary.sh``.
8
+ """