micropython-stubber 1.20.5__py3-none-any.whl → 1.23.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.
- {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.23.0.dist-info}/LICENSE +30 -30
- {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.23.0.dist-info}/METADATA +1 -1
- micropython_stubber-1.23.0.dist-info/RECORD +159 -0
- mpflash/README.md +184 -184
- mpflash/libusb_flash.ipynb +203 -203
- mpflash/mpflash/add_firmware.py +98 -98
- mpflash/mpflash/ask_input.py +236 -236
- mpflash/mpflash/bootloader/__init__.py +37 -36
- mpflash/mpflash/bootloader/manual.py +102 -102
- mpflash/mpflash/bootloader/micropython.py +10 -10
- mpflash/mpflash/bootloader/touch1200.py +45 -45
- mpflash/mpflash/cli_download.py +129 -129
- mpflash/mpflash/cli_flash.py +219 -219
- mpflash/mpflash/cli_group.py +98 -98
- mpflash/mpflash/cli_list.py +81 -81
- mpflash/mpflash/cli_main.py +41 -41
- mpflash/mpflash/common.py +164 -164
- mpflash/mpflash/config.py +43 -47
- mpflash/mpflash/connected.py +74 -74
- mpflash/mpflash/download.py +360 -360
- mpflash/mpflash/downloaded.py +130 -129
- mpflash/mpflash/errors.py +9 -9
- mpflash/mpflash/flash.py +55 -52
- mpflash/mpflash/flash_esp.py +59 -59
- mpflash/mpflash/flash_stm32.py +18 -24
- mpflash/mpflash/flash_stm32_cube.py +111 -111
- mpflash/mpflash/flash_stm32_dfu.py +104 -101
- mpflash/mpflash/flash_uf2.py +89 -67
- mpflash/mpflash/flash_uf2_boardid.py +15 -15
- mpflash/mpflash/flash_uf2_linux.py +129 -123
- mpflash/mpflash/flash_uf2_macos.py +37 -34
- mpflash/mpflash/flash_uf2_windows.py +38 -34
- mpflash/mpflash/list.py +89 -89
- mpflash/mpflash/logger.py +41 -41
- mpflash/mpflash/mpboard_id/__init__.py +93 -93
- mpflash/mpflash/mpboard_id/add_boards.py +255 -255
- 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 +226 -221
- mpflash/mpflash/mpremoteboard/mpy_fw_info.py +141 -141
- mpflash/mpflash/mpremoteboard/runner.py +140 -140
- mpflash/mpflash/uf2disk.py +12 -12
- mpflash/mpflash/vendor/basicgit.py +288 -288
- 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/vendor/versions.py +119 -117
- mpflash/mpflash/worklist.py +171 -170
- mpflash/poetry.lock +1588 -1588
- mpflash/pyproject.toml +64 -60
- mpflash/stm32_udev_rules.md +62 -62
- stubber/__init__.py +3 -3
- stubber/basicgit.py +294 -288
- stubber/board/board_info.csv +193 -193
- stubber/board/boot.py +34 -34
- stubber/board/createstubs.py +986 -986
- stubber/board/createstubs_db.py +825 -825
- stubber/board/createstubs_db_min.py +331 -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 +766 -766
- stubber/board/createstubs_mem_min.py +306 -306
- stubber/board/createstubs_mem_mpy.mpy +0 -0
- stubber/board/createstubs_min.py +294 -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 +454 -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 +145 -145
- stubber/codemod/merge_docstub.py +284 -284
- stubber/codemod/modify_list.py +54 -54
- stubber/codemod/utils.py +57 -57
- stubber/commands/build_cmd.py +94 -94
- stubber/commands/cli.py +55 -51
- stubber/commands/clone_cmd.py +77 -66
- stubber/commands/config_cmd.py +29 -29
- stubber/commands/enrich_folder_cmd.py +71 -70
- stubber/commands/get_core_cmd.py +71 -69
- stubber/commands/get_docstubs_cmd.py +89 -87
- stubber/commands/get_frozen_cmd.py +114 -112
- stubber/commands/get_mcu_cmd.py +61 -56
- stubber/commands/merge_cmd.py +67 -66
- stubber/commands/publish_cmd.py +119 -119
- stubber/commands/stub_cmd.py +31 -30
- stubber/commands/switch_cmd.py +62 -54
- stubber/commands/variants_cmd.py +49 -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 +36 -36
- stubber/freeze/common.py +68 -68
- stubber/freeze/freeze_folder.py +69 -69
- stubber/freeze/freeze_manifest_2.py +113 -113
- stubber/freeze/get_frozen.py +127 -127
- stubber/get_cpython.py +101 -101
- stubber/get_lobo.py +59 -59
- stubber/minify.py +418 -418
- stubber/publish/bump.py +86 -86
- stubber/publish/candidates.py +262 -262
- stubber/publish/database.py +18 -18
- stubber/publish/defaults.py +45 -45
- stubber/publish/enums.py +24 -24
- stubber/publish/helpers.py +29 -29
- stubber/publish/merge_docstubs.py +130 -130
- stubber/publish/missing_class_methods.py +49 -49
- stubber/publish/package.py +146 -146
- stubber/publish/pathnames.py +51 -51
- stubber/publish/publish.py +120 -120
- stubber/publish/pypi.py +38 -38
- stubber/publish/stubpackage.py +1029 -1029
- stubber/rst/__init__.py +9 -9
- stubber/rst/classsort.py +77 -77
- stubber/rst/lookup.py +530 -530
- stubber/rst/output_dict.py +401 -401
- stubber/rst/reader.py +822 -822
- stubber/rst/report_return.py +69 -69
- stubber/rst/rst_utils.py +540 -540
- stubber/stubber.py +38 -38
- stubber/stubs_from_docs.py +90 -90
- stubber/tools/manifestfile.py +655 -610
- stubber/tools/readme.md +7 -6
- stubber/update_fallback.py +117 -117
- stubber/update_module_list.py +123 -123
- stubber/utils/__init__.py +5 -5
- stubber/utils/config.py +127 -127
- stubber/utils/makeversionhdr.py +54 -54
- stubber/utils/manifest.py +92 -92
- stubber/utils/post.py +79 -79
- stubber/utils/repos.py +157 -154
- stubber/utils/stubmaker.py +139 -139
- stubber/utils/typed_config_toml.py +77 -77
- stubber/utils/versions.py +128 -120
- stubber/variants.py +106 -106
- micropython_stubber-1.20.5.dist-info/RECORD +0 -159
- {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.23.0.dist-info}/WHEEL +0 -0
- {micropython_stubber-1.20.5.dist-info → micropython_stubber-1.23.0.dist-info}/entry_points.txt +0 -0
@@ -1,48 +1,48 @@
|
|
1
|
-
from collections import deque
|
2
|
-
from enum import Enum
|
3
|
-
from pathlib import Path
|
4
|
-
from typing import Iterator, cast
|
5
|
-
|
6
|
-
PARTIALS_DIR = Path(__file__).parent.absolute()
|
7
|
-
|
8
|
-
PARTIAL_START = "###PARTIAL###"
|
9
|
-
PARTIAL_END = "###PARTIALEND###"
|
10
|
-
|
11
|
-
|
12
|
-
def _read_partial(path: Path) -> Iterator[str]:
|
13
|
-
"""
|
14
|
-
Read a partial from the file at `path`
|
15
|
-
and yield only the lines between the ###PARTIAL### and ###PARTIALEND### markers
|
16
|
-
"""
|
17
|
-
lines = deque(path.read_text(encoding="utf-8").splitlines(keepends=True))
|
18
|
-
_start = False
|
19
|
-
_end = False
|
20
|
-
while True:
|
21
|
-
try:
|
22
|
-
if not _start and (line := lines.popleft()):
|
23
|
-
_start = line.strip() == PARTIAL_START
|
24
|
-
if not _end and (line := lines.pop()):
|
25
|
-
_end = line.strip() == PARTIAL_END
|
26
|
-
if _start and _end:
|
27
|
-
break
|
28
|
-
except IndexError:
|
29
|
-
# or avoid erroring out if the file does not have the markers
|
30
|
-
raise ValueError(f"Partial {path} does not have ###PARTIAL### and ###PARTIALEND### markers")
|
31
|
-
|
32
|
-
yield from lines
|
33
|
-
|
34
|
-
|
35
|
-
class _PartialMember:
|
36
|
-
def contents(self) -> str:
|
37
|
-
"""Return the contents of the partial."""
|
38
|
-
return "".join(_read_partial(cast(Enum, self).value))
|
39
|
-
|
40
|
-
|
41
|
-
Partial = Enum(
|
42
|
-
"Partial",
|
43
|
-
[(p.stem.upper(), p.absolute()) for p in PARTIALS_DIR.glob("*.py")],
|
44
|
-
type=_PartialMember,
|
45
|
-
)
|
46
|
-
|
47
|
-
|
48
|
-
__all__ = ["Partial"]
|
1
|
+
from collections import deque
|
2
|
+
from enum import Enum
|
3
|
+
from pathlib import Path
|
4
|
+
from typing import Iterator, cast
|
5
|
+
|
6
|
+
PARTIALS_DIR = Path(__file__).parent.absolute()
|
7
|
+
|
8
|
+
PARTIAL_START = "###PARTIAL###"
|
9
|
+
PARTIAL_END = "###PARTIALEND###"
|
10
|
+
|
11
|
+
|
12
|
+
def _read_partial(path: Path) -> Iterator[str]:
|
13
|
+
"""
|
14
|
+
Read a partial from the file at `path`
|
15
|
+
and yield only the lines between the ###PARTIAL### and ###PARTIALEND### markers
|
16
|
+
"""
|
17
|
+
lines = deque(path.read_text(encoding="utf-8").splitlines(keepends=True))
|
18
|
+
_start = False
|
19
|
+
_end = False
|
20
|
+
while True:
|
21
|
+
try:
|
22
|
+
if not _start and (line := lines.popleft()):
|
23
|
+
_start = line.strip() == PARTIAL_START
|
24
|
+
if not _end and (line := lines.pop()):
|
25
|
+
_end = line.strip() == PARTIAL_END
|
26
|
+
if _start and _end:
|
27
|
+
break
|
28
|
+
except IndexError:
|
29
|
+
# or avoid erroring out if the file does not have the markers
|
30
|
+
raise ValueError(f"Partial {path} does not have ###PARTIAL### and ###PARTIALEND### markers")
|
31
|
+
|
32
|
+
yield from lines
|
33
|
+
|
34
|
+
|
35
|
+
class _PartialMember:
|
36
|
+
def contents(self) -> str:
|
37
|
+
"""Return the contents of the partial."""
|
38
|
+
return "".join(_read_partial(cast(Enum, self).value))
|
39
|
+
|
40
|
+
|
41
|
+
Partial = Enum(
|
42
|
+
"Partial",
|
43
|
+
[(p.stem.upper(), p.absolute()) for p in PARTIALS_DIR.glob("*.py")],
|
44
|
+
type=_PartialMember,
|
45
|
+
)
|
46
|
+
|
47
|
+
|
48
|
+
__all__ = ["Partial"]
|
@@ -1,147 +1,147 @@
|
|
1
|
-
# type: ignore
|
2
|
-
"""
|
3
|
-
This file contains the `def main()` funcion for the db variant of createstubs.py
|
4
|
-
- type_check_only is used to avoid circular imports
|
5
|
-
The partial is enclosed in ###PARTIAL### and ###PARTIALEND### markers
|
6
|
-
"""
|
7
|
-
|
8
|
-
# sourcery skip: require-parameter-annotation, for-append-to-extend, use-named-expression
|
9
|
-
|
10
|
-
from typing import TYPE_CHECKING, List
|
11
|
-
|
12
|
-
if TYPE_CHECKING:
|
13
|
-
import gc
|
14
|
-
import logging
|
15
|
-
|
16
|
-
class logging:
|
17
|
-
def getLogger(self, name: str) -> "logging": ...
|
18
|
-
|
19
|
-
def info(self, msg: str) -> None: ...
|
20
|
-
|
21
|
-
log = logging()
|
22
|
-
|
23
|
-
class Stubber:
|
24
|
-
path: str
|
25
|
-
_report: List[str]
|
26
|
-
modules = []
|
27
|
-
_json_name: str
|
28
|
-
|
29
|
-
def __init__(self, path: str = "", firmware_id: str = "") -> None: ...
|
30
|
-
|
31
|
-
def clean(self) -> None: ...
|
32
|
-
|
33
|
-
def create_one_stub(self, modulename: str) -> bool: ...
|
34
|
-
|
35
|
-
def report_start(self, filename: str = "modules.json"): ...
|
36
|
-
|
37
|
-
def report_end(self): ...
|
38
|
-
|
39
|
-
def create_all_stubs(self): ...
|
40
|
-
|
41
|
-
def read_path() -> str: ...
|
42
|
-
|
43
|
-
class _gc:
|
44
|
-
def collect(self) -> None: ...
|
45
|
-
|
46
|
-
gc: _gc
|
47
|
-
log = logging.getLogger("stubber")
|
48
|
-
|
49
|
-
def file_exists(filename: str) -> bool: ...
|
50
|
-
|
51
|
-
LIBS = [".", "lib"]
|
52
|
-
|
53
|
-
|
54
|
-
###PARTIAL###
|
55
|
-
SKIP_FILE = "modulelist.done"
|
56
|
-
|
57
|
-
|
58
|
-
def get_modules(skip=0):
|
59
|
-
# new
|
60
|
-
for p in LIBS:
|
61
|
-
fname = p + "/modulelist.txt"
|
62
|
-
if not file_exists(fname):
|
63
|
-
continue
|
64
|
-
try:
|
65
|
-
with open(fname) as f:
|
66
|
-
i = 0
|
67
|
-
while True:
|
68
|
-
line = f.readline().strip()
|
69
|
-
if not line:
|
70
|
-
break
|
71
|
-
if len(line) > 0 and line[0] == "#":
|
72
|
-
continue
|
73
|
-
i += 1
|
74
|
-
if i < skip:
|
75
|
-
continue
|
76
|
-
yield line
|
77
|
-
break
|
78
|
-
except OSError:
|
79
|
-
pass
|
80
|
-
|
81
|
-
|
82
|
-
def write_skip(done):
|
83
|
-
# write count of modules already processed to file
|
84
|
-
with open(SKIP_FILE, "w") as f:
|
85
|
-
f.write(str(done) + "\n")
|
86
|
-
|
87
|
-
|
88
|
-
def read_skip():
|
89
|
-
# read count of modules already processed from file
|
90
|
-
done = 0
|
91
|
-
try:
|
92
|
-
with open(SKIP_FILE) as f:
|
93
|
-
done = int(f.readline().strip())
|
94
|
-
except OSError:
|
95
|
-
pass
|
96
|
-
return done
|
97
|
-
|
98
|
-
|
99
|
-
def main():
|
100
|
-
import machine # type: ignore
|
101
|
-
|
102
|
-
was_running = file_exists(SKIP_FILE)
|
103
|
-
if was_running:
|
104
|
-
log.info("Continue from last run")
|
105
|
-
else:
|
106
|
-
log.info("Starting new run")
|
107
|
-
# try:
|
108
|
-
# f = open("modulelist.done", "r+b")
|
109
|
-
# was_running = True
|
110
|
-
# print("Continue from last run")
|
111
|
-
# except OSError:
|
112
|
-
# f = open("modulelist.done", "w+b")
|
113
|
-
# was_running = False
|
114
|
-
stubber = Stubber(path=read_path())
|
115
|
-
|
116
|
-
# f_name = "{}/{}".format(stubber.path, "modules.json")
|
117
|
-
skip = 0
|
118
|
-
if not was_running:
|
119
|
-
# Only clean folder if this is a first run
|
120
|
-
stubber.clean()
|
121
|
-
stubber.report_start("modules.json")
|
122
|
-
else:
|
123
|
-
skip = read_skip()
|
124
|
-
stubber._json_name = "{}/{}".format(stubber.path, "modules.json")
|
125
|
-
|
126
|
-
for modulename in get_modules(skip):
|
127
|
-
# ------------------------------------
|
128
|
-
# do epic shit
|
129
|
-
# but sometimes things fail / run out of memory and reboot
|
130
|
-
try:
|
131
|
-
stubber.create_one_stub(modulename)
|
132
|
-
except MemoryError:
|
133
|
-
# RESET AND HOPE THAT IN THE NEXT CYCLE WE PROGRESS FURTHER
|
134
|
-
machine.reset()
|
135
|
-
# -------------------------------------
|
136
|
-
gc.collect()
|
137
|
-
# modules_done[modulename] = str(stubber._report[-1] if ok else "failed")
|
138
|
-
# with open("modulelist.done", "a") as f:
|
139
|
-
# f.write("{}={}\n".format(modulename, "ok" if ok else "failed"))
|
140
|
-
skip += 1
|
141
|
-
write_skip(skip)
|
142
|
-
|
143
|
-
print("All modules have been processed, Finalizing report")
|
144
|
-
stubber.report_end()
|
145
|
-
|
146
|
-
|
147
|
-
###PARTIALEND###
|
1
|
+
# type: ignore
|
2
|
+
"""
|
3
|
+
This file contains the `def main()` funcion for the db variant of createstubs.py
|
4
|
+
- type_check_only is used to avoid circular imports
|
5
|
+
The partial is enclosed in ###PARTIAL### and ###PARTIALEND### markers
|
6
|
+
"""
|
7
|
+
|
8
|
+
# sourcery skip: require-parameter-annotation, for-append-to-extend, use-named-expression
|
9
|
+
|
10
|
+
from typing import TYPE_CHECKING, List
|
11
|
+
|
12
|
+
if TYPE_CHECKING:
|
13
|
+
import gc
|
14
|
+
import logging
|
15
|
+
|
16
|
+
class logging:
|
17
|
+
def getLogger(self, name: str) -> "logging": ...
|
18
|
+
|
19
|
+
def info(self, msg: str) -> None: ...
|
20
|
+
|
21
|
+
log = logging()
|
22
|
+
|
23
|
+
class Stubber:
|
24
|
+
path: str
|
25
|
+
_report: List[str]
|
26
|
+
modules = []
|
27
|
+
_json_name: str
|
28
|
+
|
29
|
+
def __init__(self, path: str = "", firmware_id: str = "") -> None: ...
|
30
|
+
|
31
|
+
def clean(self) -> None: ...
|
32
|
+
|
33
|
+
def create_one_stub(self, modulename: str) -> bool: ...
|
34
|
+
|
35
|
+
def report_start(self, filename: str = "modules.json"): ...
|
36
|
+
|
37
|
+
def report_end(self): ...
|
38
|
+
|
39
|
+
def create_all_stubs(self): ...
|
40
|
+
|
41
|
+
def read_path() -> str: ...
|
42
|
+
|
43
|
+
class _gc:
|
44
|
+
def collect(self) -> None: ...
|
45
|
+
|
46
|
+
gc: _gc
|
47
|
+
log = logging.getLogger("stubber")
|
48
|
+
|
49
|
+
def file_exists(filename: str) -> bool: ...
|
50
|
+
|
51
|
+
LIBS = [".", "lib"]
|
52
|
+
|
53
|
+
|
54
|
+
###PARTIAL###
|
55
|
+
SKIP_FILE = "modulelist.done"
|
56
|
+
|
57
|
+
|
58
|
+
def get_modules(skip=0):
|
59
|
+
# new
|
60
|
+
for p in LIBS:
|
61
|
+
fname = p + "/modulelist.txt"
|
62
|
+
if not file_exists(fname):
|
63
|
+
continue
|
64
|
+
try:
|
65
|
+
with open(fname) as f:
|
66
|
+
i = 0
|
67
|
+
while True:
|
68
|
+
line = f.readline().strip()
|
69
|
+
if not line:
|
70
|
+
break
|
71
|
+
if len(line) > 0 and line[0] == "#":
|
72
|
+
continue
|
73
|
+
i += 1
|
74
|
+
if i < skip:
|
75
|
+
continue
|
76
|
+
yield line
|
77
|
+
break
|
78
|
+
except OSError:
|
79
|
+
pass
|
80
|
+
|
81
|
+
|
82
|
+
def write_skip(done):
|
83
|
+
# write count of modules already processed to file
|
84
|
+
with open(SKIP_FILE, "w") as f:
|
85
|
+
f.write(str(done) + "\n")
|
86
|
+
|
87
|
+
|
88
|
+
def read_skip():
|
89
|
+
# read count of modules already processed from file
|
90
|
+
done = 0
|
91
|
+
try:
|
92
|
+
with open(SKIP_FILE) as f:
|
93
|
+
done = int(f.readline().strip())
|
94
|
+
except OSError:
|
95
|
+
pass
|
96
|
+
return done
|
97
|
+
|
98
|
+
|
99
|
+
def main():
|
100
|
+
import machine # type: ignore
|
101
|
+
|
102
|
+
was_running = file_exists(SKIP_FILE)
|
103
|
+
if was_running:
|
104
|
+
log.info("Continue from last run")
|
105
|
+
else:
|
106
|
+
log.info("Starting new run")
|
107
|
+
# try:
|
108
|
+
# f = open("modulelist.done", "r+b")
|
109
|
+
# was_running = True
|
110
|
+
# print("Continue from last run")
|
111
|
+
# except OSError:
|
112
|
+
# f = open("modulelist.done", "w+b")
|
113
|
+
# was_running = False
|
114
|
+
stubber = Stubber(path=read_path())
|
115
|
+
|
116
|
+
# f_name = "{}/{}".format(stubber.path, "modules.json")
|
117
|
+
skip = 0
|
118
|
+
if not was_running:
|
119
|
+
# Only clean folder if this is a first run
|
120
|
+
stubber.clean()
|
121
|
+
stubber.report_start("modules.json")
|
122
|
+
else:
|
123
|
+
skip = read_skip()
|
124
|
+
stubber._json_name = "{}/{}".format(stubber.path, "modules.json")
|
125
|
+
|
126
|
+
for modulename in get_modules(skip):
|
127
|
+
# ------------------------------------
|
128
|
+
# do epic shit
|
129
|
+
# but sometimes things fail / run out of memory and reboot
|
130
|
+
try:
|
131
|
+
stubber.create_one_stub(modulename)
|
132
|
+
except MemoryError:
|
133
|
+
# RESET AND HOPE THAT IN THE NEXT CYCLE WE PROGRESS FURTHER
|
134
|
+
machine.reset()
|
135
|
+
# -------------------------------------
|
136
|
+
gc.collect()
|
137
|
+
# modules_done[modulename] = str(stubber._report[-1] if ok else "failed")
|
138
|
+
# with open("modulelist.done", "a") as f:
|
139
|
+
# f.write("{}={}\n".format(modulename, "ok" if ok else "failed"))
|
140
|
+
skip += 1
|
141
|
+
write_skip(skip)
|
142
|
+
|
143
|
+
print("All modules have been processed, Finalizing report")
|
144
|
+
stubber.report_end()
|
145
|
+
|
146
|
+
|
147
|
+
###PARTIALEND###
|
@@ -1,77 +1,77 @@
|
|
1
|
-
"""
|
2
|
-
This file contains the `def main()` funcion for the lvgl variant of createstubs.py
|
3
|
-
- type_check_only is used to avoid circular imports
|
4
|
-
The partial is enclosed in ###PARTIAL### and ###PARTIALEND### markers
|
5
|
-
"""
|
6
|
-
from typing import TYPE_CHECKING, List, type_check_only
|
7
|
-
|
8
|
-
if TYPE_CHECKING:
|
9
|
-
import sys
|
10
|
-
import logging
|
11
|
-
|
12
|
-
@type_check_only
|
13
|
-
class Stubber:
|
14
|
-
path: str
|
15
|
-
_report: List[str]
|
16
|
-
modules = []
|
17
|
-
|
18
|
-
def __init__(self, path: str = "", firmware_id: str = "") -> None:
|
19
|
-
...
|
20
|
-
|
21
|
-
def clean(self) -> None:
|
22
|
-
...
|
23
|
-
|
24
|
-
def create_one_stub(self, modulename: str) -> bool:
|
25
|
-
...
|
26
|
-
|
27
|
-
def report(self, filename: str = "modules.json"):
|
28
|
-
...
|
29
|
-
|
30
|
-
def create_all_stubs(self):
|
31
|
-
...
|
32
|
-
|
33
|
-
@type_check_only
|
34
|
-
def read_path() -> str:
|
35
|
-
...
|
36
|
-
|
37
|
-
@type_check_only
|
38
|
-
class _gc:
|
39
|
-
def collect(self) -> None:
|
40
|
-
...
|
41
|
-
|
42
|
-
gc: _gc
|
43
|
-
_log = logging.getLogger("stubber")
|
44
|
-
|
45
|
-
|
46
|
-
###PARTIAL###
|
47
|
-
def main():
|
48
|
-
try:
|
49
|
-
import lvgl # type: ignore
|
50
|
-
except Exception:
|
51
|
-
print("\n\nNOTE: The `lvgl` module could not be found on this firmware\n\n")
|
52
|
-
return
|
53
|
-
# Specify firmware name & version
|
54
|
-
fw_id = "lvgl"
|
55
|
-
try:
|
56
|
-
fw_id = "lvgl-{0}_{1}_{2}-{3}-{4}".format(
|
57
|
-
lvgl.version_major(),
|
58
|
-
lvgl.version_minor(),
|
59
|
-
lvgl.version_patch(),
|
60
|
-
lvgl.version_info(),
|
61
|
-
sys.platform,
|
62
|
-
)
|
63
|
-
except Exception:
|
64
|
-
fw_id = "lvgl-{0}_{1}_{2}_{3}-{4}".format(8, 1, 0, "dev", sys.platform)
|
65
|
-
finally:
|
66
|
-
stubber = Stubber(firmware_id=fw_id) # type: ignore
|
67
|
-
stubber.clean()
|
68
|
-
# modules to stub : only lvgl specifics
|
69
|
-
stubber.modules = ["io", "lodepng", "rtch", "lvgl"] # spell-checker: enable
|
70
|
-
|
71
|
-
gc.collect() # type: ignore
|
72
|
-
|
73
|
-
stubber.create_all_stubs()
|
74
|
-
stubber.report()
|
75
|
-
|
76
|
-
|
77
|
-
###PARTIALEND###
|
1
|
+
"""
|
2
|
+
This file contains the `def main()` funcion for the lvgl variant of createstubs.py
|
3
|
+
- type_check_only is used to avoid circular imports
|
4
|
+
The partial is enclosed in ###PARTIAL### and ###PARTIALEND### markers
|
5
|
+
"""
|
6
|
+
from typing import TYPE_CHECKING, List, type_check_only
|
7
|
+
|
8
|
+
if TYPE_CHECKING:
|
9
|
+
import sys
|
10
|
+
import logging
|
11
|
+
|
12
|
+
@type_check_only
|
13
|
+
class Stubber:
|
14
|
+
path: str
|
15
|
+
_report: List[str]
|
16
|
+
modules = []
|
17
|
+
|
18
|
+
def __init__(self, path: str = "", firmware_id: str = "") -> None:
|
19
|
+
...
|
20
|
+
|
21
|
+
def clean(self) -> None:
|
22
|
+
...
|
23
|
+
|
24
|
+
def create_one_stub(self, modulename: str) -> bool:
|
25
|
+
...
|
26
|
+
|
27
|
+
def report(self, filename: str = "modules.json"):
|
28
|
+
...
|
29
|
+
|
30
|
+
def create_all_stubs(self):
|
31
|
+
...
|
32
|
+
|
33
|
+
@type_check_only
|
34
|
+
def read_path() -> str:
|
35
|
+
...
|
36
|
+
|
37
|
+
@type_check_only
|
38
|
+
class _gc:
|
39
|
+
def collect(self) -> None:
|
40
|
+
...
|
41
|
+
|
42
|
+
gc: _gc
|
43
|
+
_log = logging.getLogger("stubber")
|
44
|
+
|
45
|
+
|
46
|
+
###PARTIAL###
|
47
|
+
def main():
|
48
|
+
try:
|
49
|
+
import lvgl # type: ignore
|
50
|
+
except Exception:
|
51
|
+
print("\n\nNOTE: The `lvgl` module could not be found on this firmware\n\n")
|
52
|
+
return
|
53
|
+
# Specify firmware name & version
|
54
|
+
fw_id = "lvgl"
|
55
|
+
try:
|
56
|
+
fw_id = "lvgl-{0}_{1}_{2}-{3}-{4}".format(
|
57
|
+
lvgl.version_major(),
|
58
|
+
lvgl.version_minor(),
|
59
|
+
lvgl.version_patch(),
|
60
|
+
lvgl.version_info(),
|
61
|
+
sys.platform,
|
62
|
+
)
|
63
|
+
except Exception:
|
64
|
+
fw_id = "lvgl-{0}_{1}_{2}_{3}-{4}".format(8, 1, 0, "dev", sys.platform)
|
65
|
+
finally:
|
66
|
+
stubber = Stubber(firmware_id=fw_id) # type: ignore
|
67
|
+
stubber.clean()
|
68
|
+
# modules to stub : only lvgl specifics
|
69
|
+
stubber.modules = ["io", "lodepng", "rtch", "lvgl"] # spell-checker: enable
|
70
|
+
|
71
|
+
gc.collect() # type: ignore
|
72
|
+
|
73
|
+
stubber.create_all_stubs()
|
74
|
+
stubber.report()
|
75
|
+
|
76
|
+
|
77
|
+
###PARTIALEND###
|