micropython-stubber 1.23.1__py3-none-any.whl → 1.23.2__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.
- {micropython_stubber-1.23.1.dist-info → micropython_stubber-1.23.2.dist-info}/LICENSE +30 -30
- {micropython_stubber-1.23.1.dist-info → micropython_stubber-1.23.2.dist-info}/METADATA +32 -15
- micropython_stubber-1.23.2.dist-info/RECORD +158 -0
- micropython_stubber-1.23.2.dist-info/entry_points.txt +5 -0
- mpflash/README.md +220 -194
- mpflash/libusb_flash.ipynb +203 -203
- mpflash/mpflash/add_firmware.py +98 -98
- mpflash/mpflash/ask_input.py +236 -236
- mpflash/mpflash/basicgit.py +284 -284
- mpflash/mpflash/bootloader/__init__.py +2 -2
- mpflash/mpflash/bootloader/activate.py +60 -60
- mpflash/mpflash/bootloader/detect.py +82 -82
- mpflash/mpflash/bootloader/manual.py +101 -101
- mpflash/mpflash/bootloader/micropython.py +12 -12
- mpflash/mpflash/bootloader/touch1200.py +36 -36
- mpflash/mpflash/cli_download.py +129 -129
- mpflash/mpflash/cli_flash.py +224 -219
- mpflash/mpflash/cli_group.py +111 -111
- mpflash/mpflash/cli_list.py +87 -81
- mpflash/mpflash/cli_main.py +39 -39
- mpflash/mpflash/common.py +210 -165
- mpflash/mpflash/config.py +44 -44
- mpflash/mpflash/connected.py +96 -78
- mpflash/mpflash/download.py +364 -364
- mpflash/mpflash/downloaded.py +130 -130
- mpflash/mpflash/errors.py +9 -9
- mpflash/mpflash/flash/__init__.py +55 -55
- mpflash/mpflash/flash/esp.py +59 -59
- mpflash/mpflash/flash/stm32.py +19 -19
- mpflash/mpflash/flash/stm32_dfu.py +104 -104
- mpflash/mpflash/flash/uf2/__init__.py +88 -88
- mpflash/mpflash/flash/uf2/boardid.py +15 -15
- mpflash/mpflash/flash/uf2/linux.py +136 -130
- mpflash/mpflash/flash/uf2/macos.py +42 -42
- mpflash/mpflash/flash/uf2/uf2disk.py +12 -12
- mpflash/mpflash/flash/uf2/windows.py +43 -43
- mpflash/mpflash/flash/worklist.py +170 -170
- mpflash/mpflash/list.py +106 -99
- mpflash/mpflash/logger.py +41 -41
- mpflash/mpflash/mpboard_id/__init__.py +93 -93
- mpflash/mpflash/mpboard_id/add_boards.py +251 -251
- mpflash/mpflash/mpboard_id/board.py +37 -37
- mpflash/mpflash/mpboard_id/board_id.py +86 -86
- mpflash/mpflash/mpboard_id/store.py +43 -43
- mpflash/mpflash/mpremoteboard/__init__.py +266 -222
- mpflash/mpflash/mpremoteboard/mpy_fw_info.py +141 -141
- mpflash/mpflash/mpremoteboard/runner.py +140 -140
- mpflash/mpflash/vendor/click_aliases.py +91 -91
- mpflash/mpflash/vendor/dfu.py +165 -165
- mpflash/mpflash/vendor/pydfu.py +605 -605
- mpflash/mpflash/vendor/readme.md +2 -2
- mpflash/mpflash/versions.py +135 -135
- mpflash/poetry.lock +1599 -1599
- mpflash/pyproject.toml +65 -65
- mpflash/stm32_udev_rules.md +62 -62
- stubber/__init__.py +3 -3
- stubber/board/board_info.csv +193 -193
- stubber/board/boot.py +34 -34
- stubber/board/createstubs.py +1004 -986
- stubber/board/createstubs_db.py +826 -825
- stubber/board/createstubs_db_min.py +332 -331
- stubber/board/createstubs_db_mpy.mpy +0 -0
- stubber/board/createstubs_lvgl.py +741 -741
- stubber/board/createstubs_lvgl_min.py +741 -741
- stubber/board/createstubs_mem.py +767 -766
- stubber/board/createstubs_mem_min.py +307 -306
- stubber/board/createstubs_mem_mpy.mpy +0 -0
- stubber/board/createstubs_min.py +295 -294
- stubber/board/createstubs_mpy.mpy +0 -0
- stubber/board/fw_info.py +141 -141
- stubber/board/info.py +183 -183
- stubber/board/main.py +19 -19
- stubber/board/modulelist.txt +247 -247
- stubber/board/pyrightconfig.json +34 -34
- stubber/bulk/mcu_stubber.py +437 -454
- stubber/codemod/_partials/__init__.py +48 -48
- stubber/codemod/_partials/db_main.py +147 -147
- stubber/codemod/_partials/lvgl_main.py +77 -77
- stubber/codemod/_partials/modules_reader.py +80 -80
- stubber/codemod/add_comment.py +53 -53
- stubber/codemod/add_method.py +65 -65
- stubber/codemod/board.py +317 -317
- stubber/codemod/enrich.py +151 -145
- stubber/codemod/merge_docstub.py +284 -284
- stubber/codemod/modify_list.py +54 -54
- stubber/codemod/utils.py +56 -56
- stubber/commands/build_cmd.py +94 -94
- stubber/commands/cli.py +49 -55
- stubber/commands/clone_cmd.py +78 -78
- stubber/commands/config_cmd.py +29 -29
- stubber/commands/enrich_folder_cmd.py +71 -71
- stubber/commands/get_core_cmd.py +71 -71
- stubber/commands/get_docstubs_cmd.py +92 -89
- stubber/commands/get_frozen_cmd.py +117 -114
- stubber/commands/get_mcu_cmd.py +102 -61
- stubber/commands/merge_cmd.py +66 -66
- stubber/commands/publish_cmd.py +118 -118
- stubber/commands/stub_cmd.py +31 -31
- stubber/commands/switch_cmd.py +62 -62
- stubber/commands/variants_cmd.py +48 -48
- stubber/cst_transformer.py +178 -178
- stubber/data/board_info.csv +193 -193
- stubber/data/board_info.json +1729 -1729
- stubber/data/micropython_tags.csv +15 -15
- stubber/data/requirements-core-micropython.txt +38 -38
- stubber/data/requirements-core-pycopy.txt +39 -39
- stubber/downloader.py +37 -36
- stubber/freeze/common.py +72 -68
- stubber/freeze/freeze_folder.py +69 -69
- stubber/freeze/freeze_manifest_2.py +126 -113
- stubber/freeze/get_frozen.py +131 -127
- stubber/get_cpython.py +112 -101
- stubber/get_lobo.py +59 -59
- stubber/minify.py +423 -419
- stubber/publish/bump.py +86 -86
- stubber/publish/candidates.py +275 -256
- stubber/publish/database.py +18 -18
- stubber/publish/defaults.py +40 -40
- stubber/publish/enums.py +24 -24
- stubber/publish/helpers.py +29 -29
- stubber/publish/merge_docstubs.py +136 -130
- stubber/publish/missing_class_methods.py +51 -49
- stubber/publish/package.py +150 -146
- stubber/publish/pathnames.py +51 -51
- stubber/publish/publish.py +120 -120
- stubber/publish/pypi.py +42 -38
- stubber/publish/stubpackage.py +1055 -1027
- stubber/rst/__init__.py +9 -9
- stubber/rst/classsort.py +78 -77
- stubber/rst/lookup.py +533 -530
- stubber/rst/output_dict.py +401 -401
- stubber/rst/reader.py +814 -814
- stubber/rst/report_return.py +77 -69
- stubber/rst/rst_utils.py +541 -540
- stubber/stubber.py +38 -38
- stubber/stubs_from_docs.py +90 -90
- stubber/tools/manifestfile.py +654 -654
- stubber/tools/readme.md +6 -6
- stubber/update_fallback.py +117 -117
- stubber/update_module_list.py +123 -123
- stubber/utils/__init__.py +6 -6
- stubber/utils/config.py +137 -125
- stubber/utils/makeversionhdr.py +54 -54
- stubber/utils/manifest.py +90 -90
- stubber/utils/post.py +80 -79
- stubber/utils/repos.py +156 -150
- stubber/utils/stubmaker.py +139 -139
- stubber/utils/typed_config_toml.py +80 -77
- stubber/variants.py +106 -106
- micropython_stubber-1.23.1.dist-info/RECORD +0 -159
- micropython_stubber-1.23.1.dist-info/entry_points.txt +0 -3
- mpflash/basicgit.py +0 -288
- {micropython_stubber-1.23.1.dist-info → micropython_stubber-1.23.2.dist-info}/WHEEL +0 -0
stubber/publish/candidates.py
CHANGED
@@ -1,256 +1,275 @@
|
|
1
|
-
"""
|
2
|
-
In order to generate stups for all ports and boars and versions of micropython we need to know
|
3
|
-
what versions are available. This module provides functions to :
|
4
|
-
- get a list of all ports for a given version of micropython ( list micropython ports)
|
5
|
-
- get a list of all ports and board for a given version of micropython (list micropython ports boards)
|
6
|
-
|
7
|
-
- get a list of versions for micropython ( version candidates)
|
8
|
-
- get the frozen stubs for a given version of micropython ( frozen candidates)
|
9
|
-
- get a list of all the docstubs (docstub candidates)
|
10
|
-
- get a list of the firmware/MCU stubs (firmware candidates)
|
11
|
-
"""
|
12
|
-
|
13
|
-
import re
|
14
|
-
from pathlib import Path
|
15
|
-
from typing import Any, Dict, Generator, List, Optional, Union
|
16
|
-
|
17
|
-
from
|
18
|
-
from packaging.version import parse
|
19
|
-
|
20
|
-
import mpflash.basicgit as git
|
21
|
-
from mpflash.versions import
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
family
|
66
|
-
|
67
|
-
)
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
mpy_path =
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
mpy_path =
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
for
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
#
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
versions
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
1
|
+
"""
|
2
|
+
In order to generate stups for all ports and boars and versions of micropython we need to know
|
3
|
+
what versions are available. This module provides functions to :
|
4
|
+
- get a list of all ports for a given version of micropython ( list micropython ports)
|
5
|
+
- get a list of all ports and board for a given version of micropython (list micropython ports boards)
|
6
|
+
|
7
|
+
- get a list of versions for micropython ( version candidates)
|
8
|
+
- get the frozen stubs for a given version of micropython ( frozen candidates)
|
9
|
+
- get a list of all the docstubs (docstub candidates)
|
10
|
+
- get a list of the firmware/MCU stubs (firmware candidates)
|
11
|
+
"""
|
12
|
+
|
13
|
+
import re
|
14
|
+
from pathlib import Path
|
15
|
+
from typing import Any, Dict, Generator, List, Optional, Union
|
16
|
+
|
17
|
+
from mpflash.logger import log
|
18
|
+
from packaging.version import parse
|
19
|
+
|
20
|
+
import mpflash.basicgit as git
|
21
|
+
from mpflash.versions import (
|
22
|
+
OLDEST_VERSION,
|
23
|
+
SET_PREVIEW,
|
24
|
+
V_PREVIEW,
|
25
|
+
clean_version,
|
26
|
+
micropython_versions,
|
27
|
+
)
|
28
|
+
from stubber import utils
|
29
|
+
from stubber.publish.defaults import GENERIC, GENERIC_L, GENERIC_U
|
30
|
+
|
31
|
+
# from stubber.publish.enums import COMBO_STUBS
|
32
|
+
from stubber.utils.config import CONFIG
|
33
|
+
|
34
|
+
|
35
|
+
def subfolder_names(path: Path):
|
36
|
+
"returns a list of names of the sub folders of the given path"
|
37
|
+
if path.exists():
|
38
|
+
for child in path.iterdir():
|
39
|
+
if child.is_dir():
|
40
|
+
yield child.name
|
41
|
+
|
42
|
+
|
43
|
+
def version_candidates(
|
44
|
+
suffix: str,
|
45
|
+
prefix: str = r".*",
|
46
|
+
*,
|
47
|
+
path: Path = CONFIG.stub_path,
|
48
|
+
oldest: str = OLDEST_VERSION,
|
49
|
+
) -> Generator[str, None, None]:
|
50
|
+
"get a list of versions for the given family and suffix"
|
51
|
+
if path.exists():
|
52
|
+
folder_re = prefix + "-(.*)-" + suffix
|
53
|
+
for name in subfolder_names(path):
|
54
|
+
if match := re.match(folder_re, name):
|
55
|
+
folder_ver = clean_version(match[1])
|
56
|
+
if folder_ver == V_PREVIEW or parse(folder_ver) >= parse(oldest):
|
57
|
+
yield folder_ver
|
58
|
+
|
59
|
+
|
60
|
+
def list_frozen_ports(
|
61
|
+
family: str = "micropython",
|
62
|
+
version: str = V_PREVIEW,
|
63
|
+
path: Path = CONFIG.stub_path,
|
64
|
+
):
|
65
|
+
"get list of ports with frozen stubs for a given family and version"
|
66
|
+
ports_path = path / f"{family}-{version}-frozen"
|
67
|
+
return list(subfolder_names(ports_path))
|
68
|
+
|
69
|
+
|
70
|
+
def list_micropython_ports(
|
71
|
+
family: str = "micropython",
|
72
|
+
mpy_path: Path = CONFIG.mpy_path,
|
73
|
+
):
|
74
|
+
"get list of micropython ports for a given family and version"
|
75
|
+
if family != "micropython":
|
76
|
+
# todo: add support for other families
|
77
|
+
return []
|
78
|
+
mpy_path = Path("./repos/micropython")
|
79
|
+
|
80
|
+
ports_path = mpy_path / "ports"
|
81
|
+
return [p for p in list(subfolder_names(ports_path)) if p not in CONFIG.BLOCKED_PORTS]
|
82
|
+
|
83
|
+
|
84
|
+
def list_micropython_port_boards(
|
85
|
+
port: str,
|
86
|
+
family: str = "micropython",
|
87
|
+
mpy_path: Path = CONFIG.mpy_path,
|
88
|
+
):
|
89
|
+
"get list of micropython boards for a given family version and board"
|
90
|
+
if family != "micropython":
|
91
|
+
# todo: add support for other families
|
92
|
+
return []
|
93
|
+
mpy_path = Path("./repos/micropython")
|
94
|
+
boards_path = mpy_path / "ports" / port / "boards"
|
95
|
+
return list(subfolder_names(boards_path))
|
96
|
+
|
97
|
+
|
98
|
+
def frozen_candidates(
|
99
|
+
family: str = "micropython",
|
100
|
+
versions: Union[str, List[str]] = V_PREVIEW,
|
101
|
+
ports: Union[str, List[str]] = "all",
|
102
|
+
boards: Union[str, List[str]] = "all",
|
103
|
+
*,
|
104
|
+
path: Path = CONFIG.stub_path,
|
105
|
+
) -> Generator[Dict[str, Any], None, None]:
|
106
|
+
"""
|
107
|
+
generate a list of possible MCU stubs for the given family (, version port and board) ?
|
108
|
+
- family = micropython
|
109
|
+
board and port are ignored, they are looked up from the available frozen stubs
|
110
|
+
- versions = 'latest' , 'auto' or a list of versions
|
111
|
+
- port = 'auto' or a specific port
|
112
|
+
- board = 'auto' or a specific board, 'generic' must be specified in lowercare
|
113
|
+
"""
|
114
|
+
auto_port = is_auto(ports)
|
115
|
+
auto_board = is_auto(boards)
|
116
|
+
if is_auto(versions):
|
117
|
+
versions = list(version_candidates(suffix="frozen", prefix=family, path=path)) + [
|
118
|
+
V_PREVIEW
|
119
|
+
]
|
120
|
+
else:
|
121
|
+
versions = [versions] if isinstance(versions, str) else versions
|
122
|
+
|
123
|
+
versions = [clean_version(v, flat=True) for v in versions]
|
124
|
+
|
125
|
+
if isinstance(ports, str):
|
126
|
+
ports = [ports]
|
127
|
+
if isinstance(boards, str):
|
128
|
+
boards = [boards]
|
129
|
+
# ---------------------------------------------------------------------------
|
130
|
+
# ---------------------------------------------------------------------------
|
131
|
+
for version in versions:
|
132
|
+
if auto_port:
|
133
|
+
if family == "micropython":
|
134
|
+
# lookup the (frozen) micropython ports
|
135
|
+
ports = list_frozen_ports(family, version, path=path)
|
136
|
+
else:
|
137
|
+
raise NotImplementedError(
|
138
|
+
f"auto ports not implemented for family {family}"
|
139
|
+
) # pragma: no cover
|
140
|
+
# elif family == "pycom":
|
141
|
+
# ports = ["esp32"]
|
142
|
+
# elif family == "lobo":
|
143
|
+
# ports = ["esp32"]
|
144
|
+
# ---------------------------------------------------------------------------
|
145
|
+
for port in ports:
|
146
|
+
port_path = path / f"{family}-{version}-frozen" / port
|
147
|
+
if port_path.exists():
|
148
|
+
yield {
|
149
|
+
"family": family,
|
150
|
+
"version": version,
|
151
|
+
"port": port,
|
152
|
+
"board": GENERIC_L,
|
153
|
+
# "pkg_type": COMBO_STUBS,
|
154
|
+
}
|
155
|
+
# if not auto_board:
|
156
|
+
# for board in boards:
|
157
|
+
# port_path = board_path/ "board" / board
|
158
|
+
# if port_path.exists():
|
159
|
+
# yield {"family": family, "version": version, "port": port, "board": board, "pkg_type": COMBO_STUBS}
|
160
|
+
# else: # auto board
|
161
|
+
if auto_board:
|
162
|
+
if family == "micropython":
|
163
|
+
# lookup the (frozen) micropython ports
|
164
|
+
boards = list(subfolder_names(port_path))
|
165
|
+
# TODO: remove non-relevant boards
|
166
|
+
# - release - used in release testing
|
167
|
+
# generic_512 - small memory footprint
|
168
|
+
#
|
169
|
+
|
170
|
+
else:
|
171
|
+
# raise NotImplementedError(f"auto boards not implemented for family {family}") # pragma: no cover
|
172
|
+
raise NotImplementedError(
|
173
|
+
f"auto boards not implemented for family {family}"
|
174
|
+
) # pragma: no cover
|
175
|
+
# elif family == "pycom":
|
176
|
+
# boards = ["wipy", "lopy", "gpy", "fipy"]
|
177
|
+
# ---------------------------------------------------------------------------
|
178
|
+
for board in boards:
|
179
|
+
assert isinstance(board, str)
|
180
|
+
# frozen stubs found, and not excluded, generic is already explicitly included, test builds excluded
|
181
|
+
# Micropython repo uses CAPS for board names, but micropython-stubs are lowercase
|
182
|
+
board_found = (path / f"{family}-{version}-frozen" / port / board.upper()).exists()
|
183
|
+
if board_found and board.upper() not in [
|
184
|
+
GENERIC_L.upper(),
|
185
|
+
"RELEASE",
|
186
|
+
"GENERIC_512K",
|
187
|
+
]:
|
188
|
+
yield {
|
189
|
+
"family": family,
|
190
|
+
"version": version,
|
191
|
+
"port": port,
|
192
|
+
"board": board,
|
193
|
+
# "pkg_type": COMBO_STUBS,
|
194
|
+
}
|
195
|
+
|
196
|
+
|
197
|
+
def is_auto(thing: Union[None, str, List[str]]):
|
198
|
+
"Is this version/port/board specified as 'auto' ?"
|
199
|
+
if isinstance(thing, str):
|
200
|
+
return thing in ["auto", "all"]
|
201
|
+
if isinstance(thing, list):
|
202
|
+
return any(i in ["auto", "all"] for i in thing)
|
203
|
+
|
204
|
+
|
205
|
+
def board_candidates(
|
206
|
+
family: str = "micropython",
|
207
|
+
versions: Union[str, List[str]] = V_PREVIEW,
|
208
|
+
*,
|
209
|
+
mpy_path: Path = CONFIG.mpy_path,
|
210
|
+
):
|
211
|
+
"""
|
212
|
+
generate a list of possible board stub candidates for the given family and version.
|
213
|
+
list is based on the micropython repo: /ports/<list of ports>/boards/<list of boards>
|
214
|
+
"""
|
215
|
+
if is_auto(versions):
|
216
|
+
versions = list(micropython_versions(minver=OLDEST_VERSION))
|
217
|
+
elif isinstance(versions, str):
|
218
|
+
versions = [versions]
|
219
|
+
versions = [clean_version(v, flat=False) for v in versions]
|
220
|
+
|
221
|
+
for version in versions:
|
222
|
+
# check out the micropython repo for this version
|
223
|
+
if version in SET_PREVIEW:
|
224
|
+
r = git.switch_branch(repo=mpy_path, branch="master")
|
225
|
+
# get the current checked out version
|
226
|
+
version = utils.checkedout_version(mpy_path)
|
227
|
+
else:
|
228
|
+
r = git.checkout_tag(repo=mpy_path, tag=version)
|
229
|
+
if not r:
|
230
|
+
log.warning(
|
231
|
+
f"Incorrect version: {version} or did you forget to run `stubber clone` to get the micropython repo?"
|
232
|
+
)
|
233
|
+
return []
|
234
|
+
ports = list_micropython_ports(family=family, mpy_path=mpy_path)
|
235
|
+
for port in ports:
|
236
|
+
# Yield the generic port exactly one time
|
237
|
+
yield {
|
238
|
+
"family": family,
|
239
|
+
"version": version,
|
240
|
+
"port": port,
|
241
|
+
"board": GENERIC_U,
|
242
|
+
}
|
243
|
+
for board in list_micropython_port_boards(family=family, mpy_path=mpy_path, port=port):
|
244
|
+
if board not in GENERIC:
|
245
|
+
yield {
|
246
|
+
"family": family,
|
247
|
+
"version": version,
|
248
|
+
"port": port,
|
249
|
+
"board": board,
|
250
|
+
}
|
251
|
+
|
252
|
+
|
253
|
+
def filter_list(
|
254
|
+
worklist: List[Dict[str, str]],
|
255
|
+
ports: Optional[Union[List[str], str]] = None,
|
256
|
+
boards: Optional[Union[List[str], str]] = None,
|
257
|
+
# versions: Optional[Union[List[str], str]] = None,
|
258
|
+
):
|
259
|
+
"""
|
260
|
+
filter a list of candidates down to the ones we want, based on the ports and boards specified (case insensitive)
|
261
|
+
for board also match using a 'GENERIC_' prefix, so board 's3' will match candidate 'GENERIC_S3'
|
262
|
+
"""
|
263
|
+
worklist = [i for i in worklist if i["board"] != ""]
|
264
|
+
if ports and not is_auto(ports):
|
265
|
+
ports_ = [i.lower() for i in ports]
|
266
|
+
worklist = [i for i in worklist if i["port"].lower() in ports_]
|
267
|
+
if boards and not is_auto(boards):
|
268
|
+
boards_ = [i.lower() for i in boards]
|
269
|
+
worklist = [
|
270
|
+
i
|
271
|
+
for i in worklist
|
272
|
+
if i["board"].lower() in boards_
|
273
|
+
or i["board"].lower().replace("generic_", "") in boards_
|
274
|
+
]
|
275
|
+
return worklist
|
stubber/publish/database.py
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
"""basic interface to the json database"""
|
2
|
-
|
3
|
-
from pathlib import Path
|
4
|
-
from typing import Union
|
5
|
-
|
6
|
-
from pysondb import PysonDB
|
7
|
-
|
8
|
-
|
9
|
-
def get_database(publish_path: Union[Path, str], production: bool = False) -> PysonDB:
|
10
|
-
"""
|
11
|
-
Open the json database at the given path.
|
12
|
-
|
13
|
-
The database should be located in a subfolder `/publish` of the root path.
|
14
|
-
The database name is determined by the production flag as `package_data[_test].jsondb`
|
15
|
-
"""
|
16
|
-
publish_path = Path(publish_path)
|
17
|
-
db_path = publish_path / f"package_data{'' if production else '_test'}.jsondb"
|
18
|
-
return PysonDB(db_path.as_posix())
|
1
|
+
"""basic interface to the json database"""
|
2
|
+
|
3
|
+
from pathlib import Path
|
4
|
+
from typing import Union
|
5
|
+
|
6
|
+
from pysondb import PysonDB
|
7
|
+
|
8
|
+
|
9
|
+
def get_database(publish_path: Union[Path, str], production: bool = False) -> PysonDB:
|
10
|
+
"""
|
11
|
+
Open the json database at the given path.
|
12
|
+
|
13
|
+
The database should be located in a subfolder `/publish` of the root path.
|
14
|
+
The database name is determined by the production flag as `package_data[_test].jsondb`
|
15
|
+
"""
|
16
|
+
publish_path = Path(publish_path)
|
17
|
+
db_path = publish_path / f"package_data{'' if production else '_test'}.jsondb"
|
18
|
+
return PysonDB(db_path.as_posix())
|