micropython-stubber 1.20.5__py3-none-any.whl → 1.20.6__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 (152) hide show
  1. {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.20.6.dist-info}/LICENSE +30 -30
  2. {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.20.6.dist-info}/METADATA +1 -1
  3. micropython_stubber-1.20.6.dist-info/RECORD +159 -0
  4. mpflash/README.md +184 -184
  5. mpflash/libusb_flash.ipynb +203 -203
  6. mpflash/mpflash/add_firmware.py +98 -98
  7. mpflash/mpflash/ask_input.py +236 -236
  8. mpflash/mpflash/bootloader/__init__.py +37 -36
  9. mpflash/mpflash/bootloader/manual.py +102 -102
  10. mpflash/mpflash/bootloader/micropython.py +10 -10
  11. mpflash/mpflash/bootloader/touch1200.py +45 -45
  12. mpflash/mpflash/cli_download.py +129 -129
  13. mpflash/mpflash/cli_flash.py +219 -219
  14. mpflash/mpflash/cli_group.py +98 -98
  15. mpflash/mpflash/cli_list.py +81 -81
  16. mpflash/mpflash/cli_main.py +41 -41
  17. mpflash/mpflash/common.py +164 -164
  18. mpflash/mpflash/config.py +47 -47
  19. mpflash/mpflash/connected.py +74 -74
  20. mpflash/mpflash/download.py +360 -360
  21. mpflash/mpflash/downloaded.py +129 -129
  22. mpflash/mpflash/errors.py +9 -9
  23. mpflash/mpflash/flash.py +52 -52
  24. mpflash/mpflash/flash_esp.py +59 -59
  25. mpflash/mpflash/flash_stm32.py +24 -24
  26. mpflash/mpflash/flash_stm32_cube.py +111 -111
  27. mpflash/mpflash/flash_stm32_dfu.py +101 -101
  28. mpflash/mpflash/flash_uf2.py +67 -67
  29. mpflash/mpflash/flash_uf2_boardid.py +15 -15
  30. mpflash/mpflash/flash_uf2_linux.py +123 -123
  31. mpflash/mpflash/flash_uf2_macos.py +34 -34
  32. mpflash/mpflash/flash_uf2_windows.py +34 -34
  33. mpflash/mpflash/list.py +89 -89
  34. mpflash/mpflash/logger.py +41 -41
  35. mpflash/mpflash/mpboard_id/__init__.py +93 -93
  36. mpflash/mpflash/mpboard_id/add_boards.py +255 -255
  37. mpflash/mpflash/mpboard_id/board.py +37 -37
  38. mpflash/mpflash/mpboard_id/board_id.py +86 -86
  39. mpflash/mpflash/mpboard_id/store.py +43 -43
  40. mpflash/mpflash/mpremoteboard/__init__.py +221 -221
  41. mpflash/mpflash/mpremoteboard/mpy_fw_info.py +141 -141
  42. mpflash/mpflash/mpremoteboard/runner.py +140 -140
  43. mpflash/mpflash/uf2disk.py +12 -12
  44. mpflash/mpflash/vendor/basicgit.py +288 -288
  45. mpflash/mpflash/vendor/click_aliases.py +91 -91
  46. mpflash/mpflash/vendor/dfu.py +165 -165
  47. mpflash/mpflash/vendor/pydfu.py +605 -605
  48. mpflash/mpflash/vendor/readme.md +2 -2
  49. mpflash/mpflash/vendor/versions.py +119 -117
  50. mpflash/mpflash/worklist.py +170 -170
  51. mpflash/poetry.lock +1588 -1588
  52. mpflash/pyproject.toml +60 -60
  53. mpflash/stm32_udev_rules.md +62 -62
  54. stubber/__init__.py +3 -3
  55. stubber/basicgit.py +294 -288
  56. stubber/board/board_info.csv +193 -193
  57. stubber/board/boot.py +34 -34
  58. stubber/board/createstubs.py +986 -986
  59. stubber/board/createstubs_db.py +825 -825
  60. stubber/board/createstubs_db_min.py +331 -331
  61. stubber/board/createstubs_db_mpy.mpy +0 -0
  62. stubber/board/createstubs_lvgl.py +741 -741
  63. stubber/board/createstubs_lvgl_min.py +741 -741
  64. stubber/board/createstubs_mem.py +766 -766
  65. stubber/board/createstubs_mem_min.py +306 -306
  66. stubber/board/createstubs_mem_mpy.mpy +0 -0
  67. stubber/board/createstubs_min.py +294 -294
  68. stubber/board/createstubs_mpy.mpy +0 -0
  69. stubber/board/fw_info.py +141 -141
  70. stubber/board/info.py +183 -183
  71. stubber/board/main.py +19 -19
  72. stubber/board/modulelist.txt +247 -247
  73. stubber/board/pyrightconfig.json +34 -34
  74. stubber/bulk/mcu_stubber.py +454 -454
  75. stubber/codemod/_partials/__init__.py +48 -48
  76. stubber/codemod/_partials/db_main.py +147 -147
  77. stubber/codemod/_partials/lvgl_main.py +77 -77
  78. stubber/codemod/_partials/modules_reader.py +80 -80
  79. stubber/codemod/add_comment.py +53 -53
  80. stubber/codemod/add_method.py +65 -65
  81. stubber/codemod/board.py +317 -317
  82. stubber/codemod/enrich.py +145 -145
  83. stubber/codemod/merge_docstub.py +284 -284
  84. stubber/codemod/modify_list.py +54 -54
  85. stubber/codemod/utils.py +57 -57
  86. stubber/commands/build_cmd.py +94 -94
  87. stubber/commands/cli.py +51 -51
  88. stubber/commands/clone_cmd.py +66 -66
  89. stubber/commands/config_cmd.py +29 -29
  90. stubber/commands/enrich_folder_cmd.py +70 -70
  91. stubber/commands/get_core_cmd.py +69 -69
  92. stubber/commands/get_docstubs_cmd.py +87 -87
  93. stubber/commands/get_frozen_cmd.py +112 -112
  94. stubber/commands/get_mcu_cmd.py +56 -56
  95. stubber/commands/merge_cmd.py +66 -66
  96. stubber/commands/publish_cmd.py +119 -119
  97. stubber/commands/stub_cmd.py +30 -30
  98. stubber/commands/switch_cmd.py +54 -54
  99. stubber/commands/variants_cmd.py +48 -48
  100. stubber/cst_transformer.py +178 -178
  101. stubber/data/board_info.csv +193 -193
  102. stubber/data/board_info.json +1729 -1729
  103. stubber/data/micropython_tags.csv +15 -15
  104. stubber/data/requirements-core-micropython.txt +38 -38
  105. stubber/data/requirements-core-pycopy.txt +39 -39
  106. stubber/downloader.py +36 -36
  107. stubber/freeze/common.py +68 -68
  108. stubber/freeze/freeze_folder.py +69 -69
  109. stubber/freeze/freeze_manifest_2.py +113 -113
  110. stubber/freeze/get_frozen.py +127 -127
  111. stubber/get_cpython.py +101 -101
  112. stubber/get_lobo.py +59 -59
  113. stubber/minify.py +418 -418
  114. stubber/publish/bump.py +86 -86
  115. stubber/publish/candidates.py +262 -262
  116. stubber/publish/database.py +18 -18
  117. stubber/publish/defaults.py +45 -45
  118. stubber/publish/enums.py +24 -24
  119. stubber/publish/helpers.py +29 -29
  120. stubber/publish/merge_docstubs.py +130 -130
  121. stubber/publish/missing_class_methods.py +49 -49
  122. stubber/publish/package.py +146 -146
  123. stubber/publish/pathnames.py +51 -51
  124. stubber/publish/publish.py +120 -120
  125. stubber/publish/pypi.py +38 -38
  126. stubber/publish/stubpackage.py +1029 -1029
  127. stubber/rst/__init__.py +9 -9
  128. stubber/rst/classsort.py +77 -77
  129. stubber/rst/lookup.py +530 -530
  130. stubber/rst/output_dict.py +401 -401
  131. stubber/rst/reader.py +822 -822
  132. stubber/rst/report_return.py +69 -69
  133. stubber/rst/rst_utils.py +540 -540
  134. stubber/stubber.py +38 -38
  135. stubber/stubs_from_docs.py +90 -90
  136. stubber/tools/manifestfile.py +610 -610
  137. stubber/tools/readme.md +5 -5
  138. stubber/update_fallback.py +117 -117
  139. stubber/update_module_list.py +123 -123
  140. stubber/utils/__init__.py +5 -5
  141. stubber/utils/config.py +127 -127
  142. stubber/utils/makeversionhdr.py +54 -54
  143. stubber/utils/manifest.py +92 -92
  144. stubber/utils/post.py +79 -79
  145. stubber/utils/repos.py +157 -154
  146. stubber/utils/stubmaker.py +139 -139
  147. stubber/utils/typed_config_toml.py +77 -77
  148. stubber/utils/versions.py +128 -120
  149. stubber/variants.py +106 -106
  150. micropython_stubber-1.20.5.dist-info/RECORD +0 -159
  151. {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.20.6.dist-info}/WHEEL +0 -0
  152. {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.20.6.dist-info}/entry_points.txt +0 -0
@@ -1,219 +1,219 @@
1
- from pathlib import Path
2
- from typing import List
3
-
4
- import rich_click as click
5
- from loguru import logger as log
6
-
7
- from mpflash.common import BootloaderMethod
8
- from mpflash.errors import MPFlashError
9
- from mpflash.mpboard_id import find_known_board
10
- from mpflash.mpremoteboard import MPRemoteBoard
11
- from mpflash.vendor.versions import clean_version
12
-
13
- from .ask_input import ask_missing_params
14
- from .cli_download import connected_ports_boards
15
- from .cli_group import cli
16
- from .cli_list import show_mcus
17
- from .common import FlashParams
18
- from .config import config
19
- from .flash import flash_list
20
- from .worklist import (WorkList, full_auto_worklist, manual_worklist,
21
- single_auto_worklist)
22
-
23
- # #########################################################################################################
24
- # CLI
25
- # #########################################################################################################
26
-
27
-
28
- @cli.command(
29
- "flash",
30
- short_help="Flash one or all connected MicroPython boards with a specific firmware and version.",
31
- )
32
- @click.option(
33
- "--firmware",
34
- "-f",
35
- "fw_folder",
36
- type=click.Path(file_okay=False, dir_okay=True, path_type=Path),
37
- default=config.firmware_folder,
38
- show_default=True,
39
- help="The folder to retrieve the firmware from.",
40
- )
41
- @click.option(
42
- "--version",
43
- "-v",
44
- "version", # single version
45
- default="stable",
46
- multiple=False,
47
- show_default=True,
48
- help="The version of MicroPython to flash.",
49
- metavar="SEMVER, 'stable', 'preview' or '?'",
50
- )
51
- @click.option(
52
- "--serial",
53
- "--serial-port",
54
- "-s",
55
- "serial",
56
- default=["*"],
57
- multiple=True,
58
- show_default=True,
59
- help="Which serial port(s) to flash",
60
- metavar="SERIALPORT",
61
- )
62
- @click.option(
63
- "--ignore",
64
- "-i",
65
- is_eager=True,
66
- help="Serial port(s) to ignore. Defaults to MPFLASH_IGNORE.",
67
- multiple=True,
68
- default=[],
69
- envvar="MPFLASH_IGNORE",
70
- show_default=True,
71
- metavar="SERIALPORT",
72
- )
73
- @click.option(
74
- "--port",
75
- "-p",
76
- "ports",
77
- help="The MicroPython port to flash",
78
- metavar="PORT",
79
- default=[],
80
- multiple=True,
81
- )
82
- @click.option(
83
- "--board",
84
- "-b",
85
- "board", # single board
86
- multiple=False,
87
- help="The MicroPython board ID to flash. If not specified will try to read the BOARD_ID from the connected MCU.",
88
- metavar="BOARD_ID or ?",
89
- )
90
- @click.option(
91
- "--cpu",
92
- "--chip",
93
- "-c",
94
- "cpu",
95
- help="The CPU type to flash. If not specified will try to read the CPU from the connected MCU.",
96
- metavar="CPU",
97
- )
98
- @click.option(
99
- "--erase/--no-erase",
100
- default=True,
101
- show_default=True,
102
- help="""Erase flash before writing new firmware. (Not supported on UF2 boards)""",
103
- )
104
- @click.option(
105
- "--bootloader",
106
- "-b",
107
- "bootloader",
108
- type=click.Choice([e.value for e in BootloaderMethod]),
109
- default="mpy",
110
- show_default=True,
111
- help="""How to enter the (MicroPython) bootloader before flashing.""",
112
- )
113
- def cli_flash_board(**kwargs) -> int:
114
- # version to versions, board to boards
115
- kwargs["versions"] = [kwargs.pop("version")] if kwargs["version"] != None else []
116
- if kwargs["board"] is None:
117
- kwargs["boards"] = []
118
- kwargs.pop("board")
119
- else:
120
- kwargs["boards"] = [kwargs.pop("board")]
121
-
122
- params = FlashParams(**kwargs)
123
- params.versions = list(params.versions)
124
- params.ports = list(params.ports)
125
- params.boards = list(params.boards)
126
- params.serial = list(params.serial)
127
- params.ignore = list(params.ignore)
128
- params.bootloader = BootloaderMethod(params.bootloader)
129
-
130
- # make it simple for the user to flash one board by asking for the serial port if not specified
131
- if params.boards == ["?"] and params.serial == "*":
132
- params.serial = ["?"]
133
-
134
- # Detect connected boards if not specified,
135
- # and ask for input if boards cannot be detected
136
- all_boards: List[MPRemoteBoard] = []
137
- if not params.boards:
138
- # nothing specified - detect connected boards
139
- params.ports, params.boards, all_boards = connected_ports_boards(include=params.ports, ignore=params.ignore)
140
- if params.boards == []:
141
- # No MicroPython boards detected, but it could be unflashed or in bootloader mode
142
- # Ask for serial port and board_id to flash
143
- params.serial = ["?"]
144
- params.boards = ["?"]
145
- # assume manual mode if no board is detected
146
- params.bootloader = BootloaderMethod("manual")
147
- else:
148
- resolve_board_ids(params)
149
-
150
- # Ask for missing input if needed
151
- params = ask_missing_params(params)
152
- if not params: # Cancelled by user
153
- return 2
154
- # TODO: Just in time Download of firmware
155
-
156
- assert isinstance(params, FlashParams)
157
-
158
- if len(params.versions) > 1:
159
- log.error(f"Only one version can be flashed at a time, not {params.versions}")
160
- raise MPFlashError("Only one version can be flashed at a time")
161
-
162
- params.versions = [clean_version(v) for v in params.versions]
163
- worklist: WorkList = []
164
- # if serial port == auto and there are one or more specified/detected boards
165
- if params.serial == ["*"] and params.boards:
166
- if not all_boards:
167
- log.trace("No boards detected yet, scanning for connected boards")
168
- _, _, all_boards = connected_ports_boards(include=params.ports, ignore=params.ignore)
169
- worklist = full_auto_worklist(
170
- all_boards=all_boards,
171
- version=params.versions[0],
172
- fw_folder=params.fw_folder,
173
- include=params.serial,
174
- ignore=params.ignore,
175
- )
176
- elif params.versions[0] and params.boards[0] and params.serial:
177
- # A one or more serial port including the board / variant
178
- worklist = manual_worklist(
179
- params.serial[0],
180
- board_id=params.boards[0],
181
- version=params.versions[0],
182
- fw_folder=params.fw_folder,
183
- )
184
- else:
185
- # just this serial port on auto
186
- worklist = single_auto_worklist(
187
- serial=params.serial[0],
188
- version=params.versions[0],
189
- fw_folder=params.fw_folder,
190
- )
191
-
192
- if flashed := flash_list(
193
- worklist,
194
- params.fw_folder,
195
- params.erase,
196
- params.bootloader,
197
- ):
198
- log.info(f"Flashed {len(flashed)} boards")
199
- show_mcus(flashed, title="Updated boards after flashing")
200
- return 0
201
- else:
202
- log.error("No boards were flashed")
203
- return 1
204
-
205
-
206
- def resolve_board_ids(params):
207
- """Resolve board descriptions to board_id, and remove empty strings from list of boards"""
208
- for board_id in params.boards:
209
- if board_id == "":
210
- params.boards.remove(board_id)
211
- continue
212
- if " " in board_id:
213
- try:
214
- if info := find_known_board(board_id):
215
- log.info(f"Resolved board description: {info.board_id}")
216
- params.boards.remove(board_id)
217
- params.boards.append(info.board_id)
218
- except Exception as e:
219
- log.warning(f"Unable to resolve board description: {e}")
1
+ from pathlib import Path
2
+ from typing import List
3
+
4
+ import rich_click as click
5
+ from loguru import logger as log
6
+
7
+ from mpflash.common import BootloaderMethod
8
+ from mpflash.errors import MPFlashError
9
+ from mpflash.mpboard_id import find_known_board
10
+ from mpflash.mpremoteboard import MPRemoteBoard
11
+ from mpflash.vendor.versions import clean_version
12
+
13
+ from .ask_input import ask_missing_params
14
+ from .cli_download import connected_ports_boards
15
+ from .cli_group import cli
16
+ from .cli_list import show_mcus
17
+ from .common import FlashParams
18
+ from .config import config
19
+ from .flash import flash_list
20
+ from .worklist import (WorkList, full_auto_worklist, manual_worklist,
21
+ single_auto_worklist)
22
+
23
+ # #########################################################################################################
24
+ # CLI
25
+ # #########################################################################################################
26
+
27
+
28
+ @cli.command(
29
+ "flash",
30
+ short_help="Flash one or all connected MicroPython boards with a specific firmware and version.",
31
+ )
32
+ @click.option(
33
+ "--firmware",
34
+ "-f",
35
+ "fw_folder",
36
+ type=click.Path(file_okay=False, dir_okay=True, path_type=Path),
37
+ default=config.firmware_folder,
38
+ show_default=True,
39
+ help="The folder to retrieve the firmware from.",
40
+ )
41
+ @click.option(
42
+ "--version",
43
+ "-v",
44
+ "version", # single version
45
+ default="stable",
46
+ multiple=False,
47
+ show_default=True,
48
+ help="The version of MicroPython to flash.",
49
+ metavar="SEMVER, 'stable', 'preview' or '?'",
50
+ )
51
+ @click.option(
52
+ "--serial",
53
+ "--serial-port",
54
+ "-s",
55
+ "serial",
56
+ default=["*"],
57
+ multiple=True,
58
+ show_default=True,
59
+ help="Which serial port(s) to flash",
60
+ metavar="SERIALPORT",
61
+ )
62
+ @click.option(
63
+ "--ignore",
64
+ "-i",
65
+ is_eager=True,
66
+ help="Serial port(s) to ignore. Defaults to MPFLASH_IGNORE.",
67
+ multiple=True,
68
+ default=[],
69
+ envvar="MPFLASH_IGNORE",
70
+ show_default=True,
71
+ metavar="SERIALPORT",
72
+ )
73
+ @click.option(
74
+ "--port",
75
+ "-p",
76
+ "ports",
77
+ help="The MicroPython port to flash",
78
+ metavar="PORT",
79
+ default=[],
80
+ multiple=True,
81
+ )
82
+ @click.option(
83
+ "--board",
84
+ "-b",
85
+ "board", # single board
86
+ multiple=False,
87
+ help="The MicroPython board ID to flash. If not specified will try to read the BOARD_ID from the connected MCU.",
88
+ metavar="BOARD_ID or ?",
89
+ )
90
+ @click.option(
91
+ "--cpu",
92
+ "--chip",
93
+ "-c",
94
+ "cpu",
95
+ help="The CPU type to flash. If not specified will try to read the CPU from the connected MCU.",
96
+ metavar="CPU",
97
+ )
98
+ @click.option(
99
+ "--erase/--no-erase",
100
+ default=True,
101
+ show_default=True,
102
+ help="""Erase flash before writing new firmware. (Not supported on UF2 boards)""",
103
+ )
104
+ @click.option(
105
+ "--bootloader",
106
+ "-b",
107
+ "bootloader",
108
+ type=click.Choice([e.value for e in BootloaderMethod]),
109
+ default="mpy",
110
+ show_default=True,
111
+ help="""How to enter the (MicroPython) bootloader before flashing.""",
112
+ )
113
+ def cli_flash_board(**kwargs) -> int:
114
+ # version to versions, board to boards
115
+ kwargs["versions"] = [kwargs.pop("version")] if kwargs["version"] != None else []
116
+ if kwargs["board"] is None:
117
+ kwargs["boards"] = []
118
+ kwargs.pop("board")
119
+ else:
120
+ kwargs["boards"] = [kwargs.pop("board")]
121
+
122
+ params = FlashParams(**kwargs)
123
+ params.versions = list(params.versions)
124
+ params.ports = list(params.ports)
125
+ params.boards = list(params.boards)
126
+ params.serial = list(params.serial)
127
+ params.ignore = list(params.ignore)
128
+ params.bootloader = BootloaderMethod(params.bootloader)
129
+
130
+ # make it simple for the user to flash one board by asking for the serial port if not specified
131
+ if params.boards == ["?"] and params.serial == "*":
132
+ params.serial = ["?"]
133
+
134
+ # Detect connected boards if not specified,
135
+ # and ask for input if boards cannot be detected
136
+ all_boards: List[MPRemoteBoard] = []
137
+ if not params.boards:
138
+ # nothing specified - detect connected boards
139
+ params.ports, params.boards, all_boards = connected_ports_boards(include=params.ports, ignore=params.ignore)
140
+ if params.boards == []:
141
+ # No MicroPython boards detected, but it could be unflashed or in bootloader mode
142
+ # Ask for serial port and board_id to flash
143
+ params.serial = ["?"]
144
+ params.boards = ["?"]
145
+ # assume manual mode if no board is detected
146
+ params.bootloader = BootloaderMethod("manual")
147
+ else:
148
+ resolve_board_ids(params)
149
+
150
+ # Ask for missing input if needed
151
+ params = ask_missing_params(params)
152
+ if not params: # Cancelled by user
153
+ return 2
154
+ # TODO: Just in time Download of firmware
155
+
156
+ assert isinstance(params, FlashParams)
157
+
158
+ if len(params.versions) > 1:
159
+ log.error(f"Only one version can be flashed at a time, not {params.versions}")
160
+ raise MPFlashError("Only one version can be flashed at a time")
161
+
162
+ params.versions = [clean_version(v) for v in params.versions]
163
+ worklist: WorkList = []
164
+ # if serial port == auto and there are one or more specified/detected boards
165
+ if params.serial == ["*"] and params.boards:
166
+ if not all_boards:
167
+ log.trace("No boards detected yet, scanning for connected boards")
168
+ _, _, all_boards = connected_ports_boards(include=params.ports, ignore=params.ignore)
169
+ worklist = full_auto_worklist(
170
+ all_boards=all_boards,
171
+ version=params.versions[0],
172
+ fw_folder=params.fw_folder,
173
+ include=params.serial,
174
+ ignore=params.ignore,
175
+ )
176
+ elif params.versions[0] and params.boards[0] and params.serial:
177
+ # A one or more serial port including the board / variant
178
+ worklist = manual_worklist(
179
+ params.serial[0],
180
+ board_id=params.boards[0],
181
+ version=params.versions[0],
182
+ fw_folder=params.fw_folder,
183
+ )
184
+ else:
185
+ # just this serial port on auto
186
+ worklist = single_auto_worklist(
187
+ serial=params.serial[0],
188
+ version=params.versions[0],
189
+ fw_folder=params.fw_folder,
190
+ )
191
+
192
+ if flashed := flash_list(
193
+ worklist,
194
+ params.fw_folder,
195
+ params.erase,
196
+ params.bootloader,
197
+ ):
198
+ log.info(f"Flashed {len(flashed)} boards")
199
+ show_mcus(flashed, title="Updated boards after flashing")
200
+ return 0
201
+ else:
202
+ log.error("No boards were flashed")
203
+ return 1
204
+
205
+
206
+ def resolve_board_ids(params):
207
+ """Resolve board descriptions to board_id, and remove empty strings from list of boards"""
208
+ for board_id in params.boards:
209
+ if board_id == "":
210
+ params.boards.remove(board_id)
211
+ continue
212
+ if " " in board_id:
213
+ try:
214
+ if info := find_known_board(board_id):
215
+ log.info(f"Resolved board description: {info.board_id}")
216
+ params.boards.remove(board_id)
217
+ params.boards.append(info.board_id)
218
+ except Exception as e:
219
+ log.warning(f"Unable to resolve board description: {e}")
@@ -1,98 +1,98 @@
1
- """
2
- Main entry point for the CLI group.
3
- Additional comands are added in the submodules.
4
- """
5
-
6
- import rich_click as click
7
-
8
- from mpflash.vendor.click_aliases import ClickAliasedGroup
9
-
10
- from .config import __version__, config
11
- from .logger import log, make_quiet, set_loglevel
12
-
13
-
14
- def cb_verbose(ctx, param, value):
15
- """Callback to set the log level to DEBUG if verbose is set"""
16
- if value and not config.quiet:
17
- # log.debug(f"Setting verbose mode to {value}")
18
- config.verbose = True
19
- if value > 1:
20
- set_loglevel("TRACE")
21
- else:
22
- set_loglevel("DEBUG")
23
- log.debug(f"version: {__version__}")
24
- else:
25
- set_loglevel("INFO")
26
- config.verbose = False
27
- return value
28
-
29
-
30
- def cb_interactive(ctx, param, value:bool):
31
- log.trace(f"Setting interactive mode to {value}")
32
- config.interactive = value
33
- return value
34
-
35
-
36
- def cb_test(ctx, param, value):
37
- if value:
38
- log.trace(f"Setting tests to {value}")
39
- config.tests = value
40
- return value
41
-
42
-
43
- def cb_quiet(ctx, param, value):
44
- log.trace(f"Setting quiet mode to {value}")
45
- if value:
46
- make_quiet()
47
- return value
48
-
49
-
50
- @click.group(cls=ClickAliasedGroup)
51
- # @click.group()
52
- @click.version_option(package_name="mpflash")
53
- @click.option(
54
- "--quiet",
55
- "-q",
56
- is_eager=True,
57
- is_flag=True,
58
- help="Suppresses all output.",
59
- callback=cb_quiet,
60
- envvar="MPFLASH_QUIET",
61
- show_default=True,
62
- )
63
- @click.option(
64
- "--interactive/--no-interactive",
65
- "-i/-x",
66
- is_eager=True,
67
- help="Suppresses all request for Input.",
68
- callback=cb_interactive,
69
- # envvar="MPFLASH_QUIET",
70
- default=True,
71
- show_default=True,
72
- )
73
- @click.option(
74
- "-V",
75
- "--verbose",
76
- is_eager=True,
77
- count=True,
78
- help="Enables verbose mode.",
79
- callback=cb_verbose,
80
- )
81
- @click.option(
82
- "--test",
83
- is_eager=True,
84
- help="test a specific feature",
85
- callback=cb_test,
86
- multiple=True,
87
- default=[],
88
- envvar="MPFLASH_TEST",
89
- show_default=True,
90
- metavar="TEST",
91
- )
92
- def cli(**kwargs):
93
- """mpflash - MicroPython Tool.
94
-
95
- A CLI to download and flash MicroPython firmware to different ports and boards.
96
- """
97
- # all functionality is added in the submodules
98
- pass
1
+ """
2
+ Main entry point for the CLI group.
3
+ Additional comands are added in the submodules.
4
+ """
5
+
6
+ import rich_click as click
7
+
8
+ from mpflash.vendor.click_aliases import ClickAliasedGroup
9
+
10
+ from .config import __version__, config
11
+ from .logger import log, make_quiet, set_loglevel
12
+
13
+
14
+ def cb_verbose(ctx, param, value):
15
+ """Callback to set the log level to DEBUG if verbose is set"""
16
+ if value and not config.quiet:
17
+ # log.debug(f"Setting verbose mode to {value}")
18
+ config.verbose = True
19
+ if value > 1:
20
+ set_loglevel("TRACE")
21
+ else:
22
+ set_loglevel("DEBUG")
23
+ log.debug(f"version: {__version__}")
24
+ else:
25
+ set_loglevel("INFO")
26
+ config.verbose = False
27
+ return value
28
+
29
+
30
+ def cb_interactive(ctx, param, value:bool):
31
+ log.trace(f"Setting interactive mode to {value}")
32
+ config.interactive = value
33
+ return value
34
+
35
+
36
+ def cb_test(ctx, param, value):
37
+ if value:
38
+ log.trace(f"Setting tests to {value}")
39
+ config.tests = value
40
+ return value
41
+
42
+
43
+ def cb_quiet(ctx, param, value):
44
+ log.trace(f"Setting quiet mode to {value}")
45
+ if value:
46
+ make_quiet()
47
+ return value
48
+
49
+
50
+ @click.group(cls=ClickAliasedGroup)
51
+ # @click.group()
52
+ @click.version_option(package_name="mpflash")
53
+ @click.option(
54
+ "--quiet",
55
+ "-q",
56
+ is_eager=True,
57
+ is_flag=True,
58
+ help="Suppresses all output.",
59
+ callback=cb_quiet,
60
+ envvar="MPFLASH_QUIET",
61
+ show_default=True,
62
+ )
63
+ @click.option(
64
+ "--interactive/--no-interactive",
65
+ "-i/-x",
66
+ is_eager=True,
67
+ help="Suppresses all request for Input.",
68
+ callback=cb_interactive,
69
+ # envvar="MPFLASH_QUIET",
70
+ default=True,
71
+ show_default=True,
72
+ )
73
+ @click.option(
74
+ "-V",
75
+ "--verbose",
76
+ is_eager=True,
77
+ count=True,
78
+ help="Enables verbose mode.",
79
+ callback=cb_verbose,
80
+ )
81
+ @click.option(
82
+ "--test",
83
+ is_eager=True,
84
+ help="test a specific feature",
85
+ callback=cb_test,
86
+ multiple=True,
87
+ default=[],
88
+ envvar="MPFLASH_TEST",
89
+ show_default=True,
90
+ metavar="TEST",
91
+ )
92
+ def cli(**kwargs):
93
+ """mpflash - MicroPython Tool.
94
+
95
+ A CLI to download and flash MicroPython firmware to different ports and boards.
96
+ """
97
+ # all functionality is added in the submodules
98
+ pass