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
stubber/tools/readme.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
tools vendored from micropython
|
2
|
-
|
3
|
-
- manifestfile.py
|
4
|
-
- Micropython manifest file parser
|
5
|
-
-
|
6
|
-
-
|
1
|
+
tools vendored from micropython
|
2
|
+
|
3
|
+
- manifestfile.py
|
4
|
+
- Micropython manifest file parser
|
5
|
+
- https://github.com/micropython/micropython/blob/master/tools/manifestfile.py
|
6
|
+
- v1.23.0
|
7
|
+
- https://raw.githubusercontent.com/micropython/micropython/v1.23.0/tools/manifestfile.py
|
stubber/update_fallback.py
CHANGED
@@ -1,117 +1,117 @@
|
|
1
|
-
# """build/update the fallback 'catch-all' stubfolder"""
|
2
|
-
|
3
|
-
# import os
|
4
|
-
# import shutil
|
5
|
-
# from distutils.dir_util import copy_tree
|
6
|
-
# from distutils.errors import DistutilsFileError
|
7
|
-
# from pathlib import Path
|
8
|
-
# from typing import List, Optional, Tuple
|
9
|
-
|
10
|
-
# from loguru import logger as log
|
11
|
-
|
12
|
-
# from stubber.utils.versions import V_PREVIEW
|
13
|
-
|
14
|
-
# # log = logging.getLogger()
|
15
|
-
|
16
|
-
# RELEASED = "v1_18"
|
17
|
-
|
18
|
-
|
19
|
-
# def fallback_sources(version: str, fw_version: Optional[str] = None) -> List[Tuple[str, str]]:
|
20
|
-
# # sourcery skip: inline-immediately-returned-variable
|
21
|
-
# """
|
22
|
-
# list of sources to build/update the fallback 'catch-all' stubfolder
|
23
|
-
# version : the version to use
|
24
|
-
# fw_version : version to source the MCU stubs from. Defaults to the version used , but can be lower
|
25
|
-
|
26
|
-
# """
|
27
|
-
# if not fw_version:
|
28
|
-
# fw_version = version
|
29
|
-
# if fw_version == V_PREVIEW:
|
30
|
-
# fw_version = RELEASED
|
31
|
-
# SOURCES = [
|
32
|
-
# ("uasyncio", f"micropython-{fw_version}-esp32"),
|
33
|
-
# ("umqtt", f"micropython-{fw_version}-esp32"),
|
34
|
-
# ("_onewire.py*", f"micropython-{fw_version}-esp32"),
|
35
|
-
# ("_uasyncio.py*", f"micropython-{fw_version}-esp32"),
|
36
|
-
# ("array.py*", f"micropython-{fw_version}-esp32"),
|
37
|
-
# ("binascii.py*", f"micropython-{fw_version}-esp32"),
|
38
|
-
# ("hashlib.py*", f"micropython-{fw_version}-esp32"),
|
39
|
-
# ("machine.py*", f"micropython-{fw_version}-esp32"),
|
40
|
-
# ("micropython.py*", f"micropython-{version}-docstubs"), # esp32"),
|
41
|
-
# ("network.pyi", f"micropython-{version}-docstubs"), # esp32"),
|
42
|
-
# ("struct.py*", f"micropython-{fw_version}-esp32"),
|
43
|
-
# ("uarray.py*", f"micropython-{fw_version}-esp32"),
|
44
|
-
# ("ubinascii.py*", f"micropython-{fw_version}-esp32"),
|
45
|
-
# ("uctypes.py*", f"micropython-{fw_version}-esp32"),
|
46
|
-
# ("uerrno.py*", f"micropython-{fw_version}-esp32"),
|
47
|
-
# ("uhashlib.py*", f"micropython-{fw_version}-esp32"),
|
48
|
-
# ("uio.py*", f"micropython-{fw_version}-esp32"),
|
49
|
-
# ("ujson.py*", f"micropython-{fw_version}-esp32"),
|
50
|
-
# ("uselect.py*", f"micropython-{fw_version}-esp32"),
|
51
|
-
# ("usocket.py*", f"micropython-{fw_version}-esp32"),
|
52
|
-
# ("ussl.py*", f"micropython-{fw_version}-esp32"),
|
53
|
-
# ("ustruct.py*", f"micropython-{fw_version}-esp32"),
|
54
|
-
# ("sys.py*", f"micropython-{fw_version}-esp32"),
|
55
|
-
# ("usys.py*", f"micropython-{fw_version}-esp32"),
|
56
|
-
# ("uzlib.py*", f"micropython-{fw_version}-esp32"),
|
57
|
-
# ("bluetooth.py*", f"micropython-{version}-docstubs"),
|
58
|
-
# # esp
|
59
|
-
# ("esp.py*", f"micropython-{version}-docstubs"), # 8266 fw stub has most functions
|
60
|
-
# ("esp32.py*", f"micropython-{version}-docstubs"), # esp32"),
|
61
|
-
# # pyboard == stm32
|
62
|
-
# ("pyb.py*", f"micropython-{fw_version}-stm32"),
|
63
|
-
# ("framebuf.py*", f"micropython-{fw_version}-stm32"),
|
64
|
-
# # rp2
|
65
|
-
# ("_rp2.py*", f"micropython-{fw_version}-rp2"),
|
66
|
-
# # stdlib
|
67
|
-
# ("os.py*", f"micropython-{fw_version}-esp32"), # -> stdlib
|
68
|
-
# ("uos.py*", f"micropython-{fw_version}-esp32"),
|
69
|
-
# ("time.py*", f"micropython-{fw_version}-esp32"), # -> stdlib
|
70
|
-
# ("utime.py*", f"micropython-{fw_version}-esp32"),
|
71
|
-
# ]
|
72
|
-
# return SOURCES
|
73
|
-
|
74
|
-
|
75
|
-
# def update_fallback(stubpath: Path, fallback_path: Path, version: str = RELEASED):
|
76
|
-
# "update the fallback stubs from the defined sources"
|
77
|
-
# # remove all *.py/.pyi files
|
78
|
-
# if not fallback_path.exists():
|
79
|
-
# os.makedirs(fallback_path)
|
80
|
-
# else:
|
81
|
-
# oldstubs = list(fallback_path.rglob("*.py")) + list(fallback_path.rglob("*.pyi"))
|
82
|
-
# log.debug(f"deleting {len(oldstubs)} stubs from {fallback_path.as_posix()}")
|
83
|
-
# for f in oldstubs:
|
84
|
-
# try:
|
85
|
-
# os.remove(f)
|
86
|
-
# except OSError as e:
|
87
|
-
# log.warning(e)
|
88
|
-
# added = 0
|
89
|
-
# for name, source in fallback_sources(version):
|
90
|
-
# if "." not in name:
|
91
|
-
# # copy folder
|
92
|
-
# log.debug(f"add {source} folder")
|
93
|
-
# try:
|
94
|
-
# copy_tree(
|
95
|
-
# (stubpath / source / name).as_posix(),
|
96
|
-
# (fallback_path / name).as_posix(),
|
97
|
-
# )
|
98
|
-
# added += 1
|
99
|
-
# except DistutilsFileError:
|
100
|
-
# log.warning(f"{(stubpath / source / name).as_posix()} not found")
|
101
|
-
# else:
|
102
|
-
# # copy file(s)
|
103
|
-
# log.debug(f"add {source}")
|
104
|
-
# for f in (stubpath / source).glob(name):
|
105
|
-
# shutil.copyfile(f, fallback_path / f.name)
|
106
|
-
# added += 1
|
107
|
-
# return added
|
108
|
-
|
109
|
-
|
110
|
-
# if __name__ == "__main__":
|
111
|
-
# from stubber.utils.config import CONFIG
|
112
|
-
|
113
|
-
# update_fallback(
|
114
|
-
# CONFIG.stub_path,
|
115
|
-
# CONFIG.fallback_path,
|
116
|
-
# version=RELEASED,
|
117
|
-
# )
|
1
|
+
# """build/update the fallback 'catch-all' stubfolder"""
|
2
|
+
|
3
|
+
# import os
|
4
|
+
# import shutil
|
5
|
+
# from distutils.dir_util import copy_tree
|
6
|
+
# from distutils.errors import DistutilsFileError
|
7
|
+
# from pathlib import Path
|
8
|
+
# from typing import List, Optional, Tuple
|
9
|
+
|
10
|
+
# from loguru import logger as log
|
11
|
+
|
12
|
+
# from stubber.utils.versions import V_PREVIEW
|
13
|
+
|
14
|
+
# # log = logging.getLogger()
|
15
|
+
|
16
|
+
# RELEASED = "v1_18"
|
17
|
+
|
18
|
+
|
19
|
+
# def fallback_sources(version: str, fw_version: Optional[str] = None) -> List[Tuple[str, str]]:
|
20
|
+
# # sourcery skip: inline-immediately-returned-variable
|
21
|
+
# """
|
22
|
+
# list of sources to build/update the fallback 'catch-all' stubfolder
|
23
|
+
# version : the version to use
|
24
|
+
# fw_version : version to source the MCU stubs from. Defaults to the version used , but can be lower
|
25
|
+
|
26
|
+
# """
|
27
|
+
# if not fw_version:
|
28
|
+
# fw_version = version
|
29
|
+
# if fw_version == V_PREVIEW:
|
30
|
+
# fw_version = RELEASED
|
31
|
+
# SOURCES = [
|
32
|
+
# ("uasyncio", f"micropython-{fw_version}-esp32"),
|
33
|
+
# ("umqtt", f"micropython-{fw_version}-esp32"),
|
34
|
+
# ("_onewire.py*", f"micropython-{fw_version}-esp32"),
|
35
|
+
# ("_uasyncio.py*", f"micropython-{fw_version}-esp32"),
|
36
|
+
# ("array.py*", f"micropython-{fw_version}-esp32"),
|
37
|
+
# ("binascii.py*", f"micropython-{fw_version}-esp32"),
|
38
|
+
# ("hashlib.py*", f"micropython-{fw_version}-esp32"),
|
39
|
+
# ("machine.py*", f"micropython-{fw_version}-esp32"),
|
40
|
+
# ("micropython.py*", f"micropython-{version}-docstubs"), # esp32"),
|
41
|
+
# ("network.pyi", f"micropython-{version}-docstubs"), # esp32"),
|
42
|
+
# ("struct.py*", f"micropython-{fw_version}-esp32"),
|
43
|
+
# ("uarray.py*", f"micropython-{fw_version}-esp32"),
|
44
|
+
# ("ubinascii.py*", f"micropython-{fw_version}-esp32"),
|
45
|
+
# ("uctypes.py*", f"micropython-{fw_version}-esp32"),
|
46
|
+
# ("uerrno.py*", f"micropython-{fw_version}-esp32"),
|
47
|
+
# ("uhashlib.py*", f"micropython-{fw_version}-esp32"),
|
48
|
+
# ("uio.py*", f"micropython-{fw_version}-esp32"),
|
49
|
+
# ("ujson.py*", f"micropython-{fw_version}-esp32"),
|
50
|
+
# ("uselect.py*", f"micropython-{fw_version}-esp32"),
|
51
|
+
# ("usocket.py*", f"micropython-{fw_version}-esp32"),
|
52
|
+
# ("ussl.py*", f"micropython-{fw_version}-esp32"),
|
53
|
+
# ("ustruct.py*", f"micropython-{fw_version}-esp32"),
|
54
|
+
# ("sys.py*", f"micropython-{fw_version}-esp32"),
|
55
|
+
# ("usys.py*", f"micropython-{fw_version}-esp32"),
|
56
|
+
# ("uzlib.py*", f"micropython-{fw_version}-esp32"),
|
57
|
+
# ("bluetooth.py*", f"micropython-{version}-docstubs"),
|
58
|
+
# # esp
|
59
|
+
# ("esp.py*", f"micropython-{version}-docstubs"), # 8266 fw stub has most functions
|
60
|
+
# ("esp32.py*", f"micropython-{version}-docstubs"), # esp32"),
|
61
|
+
# # pyboard == stm32
|
62
|
+
# ("pyb.py*", f"micropython-{fw_version}-stm32"),
|
63
|
+
# ("framebuf.py*", f"micropython-{fw_version}-stm32"),
|
64
|
+
# # rp2
|
65
|
+
# ("_rp2.py*", f"micropython-{fw_version}-rp2"),
|
66
|
+
# # stdlib
|
67
|
+
# ("os.py*", f"micropython-{fw_version}-esp32"), # -> stdlib
|
68
|
+
# ("uos.py*", f"micropython-{fw_version}-esp32"),
|
69
|
+
# ("time.py*", f"micropython-{fw_version}-esp32"), # -> stdlib
|
70
|
+
# ("utime.py*", f"micropython-{fw_version}-esp32"),
|
71
|
+
# ]
|
72
|
+
# return SOURCES
|
73
|
+
|
74
|
+
|
75
|
+
# def update_fallback(stubpath: Path, fallback_path: Path, version: str = RELEASED):
|
76
|
+
# "update the fallback stubs from the defined sources"
|
77
|
+
# # remove all *.py/.pyi files
|
78
|
+
# if not fallback_path.exists():
|
79
|
+
# os.makedirs(fallback_path)
|
80
|
+
# else:
|
81
|
+
# oldstubs = list(fallback_path.rglob("*.py")) + list(fallback_path.rglob("*.pyi"))
|
82
|
+
# log.debug(f"deleting {len(oldstubs)} stubs from {fallback_path.as_posix()}")
|
83
|
+
# for f in oldstubs:
|
84
|
+
# try:
|
85
|
+
# os.remove(f)
|
86
|
+
# except OSError as e:
|
87
|
+
# log.warning(e)
|
88
|
+
# added = 0
|
89
|
+
# for name, source in fallback_sources(version):
|
90
|
+
# if "." not in name:
|
91
|
+
# # copy folder
|
92
|
+
# log.debug(f"add {source} folder")
|
93
|
+
# try:
|
94
|
+
# copy_tree(
|
95
|
+
# (stubpath / source / name).as_posix(),
|
96
|
+
# (fallback_path / name).as_posix(),
|
97
|
+
# )
|
98
|
+
# added += 1
|
99
|
+
# except DistutilsFileError:
|
100
|
+
# log.warning(f"{(stubpath / source / name).as_posix()} not found")
|
101
|
+
# else:
|
102
|
+
# # copy file(s)
|
103
|
+
# log.debug(f"add {source}")
|
104
|
+
# for f in (stubpath / source).glob(name):
|
105
|
+
# shutil.copyfile(f, fallback_path / f.name)
|
106
|
+
# added += 1
|
107
|
+
# return added
|
108
|
+
|
109
|
+
|
110
|
+
# if __name__ == "__main__":
|
111
|
+
# from stubber.utils.config import CONFIG
|
112
|
+
|
113
|
+
# update_fallback(
|
114
|
+
# CONFIG.stub_path,
|
115
|
+
# CONFIG.fallback_path,
|
116
|
+
# version=RELEASED,
|
117
|
+
# )
|
stubber/update_module_list.py
CHANGED
@@ -1,123 +1,123 @@
|
|
1
|
-
# pragma: no cover
|
2
|
-
"""
|
3
|
-
generate the list of modules that should be attempted to stub
|
4
|
-
for this :
|
5
|
-
- combine the modules from the different texts files
|
6
|
-
- split the lines into individual module names
|
7
|
-
- combine them in one set
|
8
|
-
- remove the ones than cannot be stubbed
|
9
|
-
- remove test modules, ending in `_test`
|
10
|
-
- write updates to:
|
11
|
-
- board/modulelist.txt
|
12
|
-
- board/createstubs.py
|
13
|
-
"""
|
14
|
-
|
15
|
-
from pathlib import Path
|
16
|
-
from typing import List, Optional, Set
|
17
|
-
|
18
|
-
from loguru import logger as log
|
19
|
-
|
20
|
-
|
21
|
-
def read_modules(path: Optional[Path] = None) -> Set[str]:
|
22
|
-
"""
|
23
|
-
read text files with modules per firmware.
|
24
|
-
each contains the output of help("modules")
|
25
|
-
- lines starting with # are comments.
|
26
|
-
- split the other lines at whitespace seperator,
|
27
|
-
- and add each module to a set
|
28
|
-
"""
|
29
|
-
path = Path(path or "./data")
|
30
|
-
assert path
|
31
|
-
all_modules: Set[str] = set()
|
32
|
-
for file in path.glob("*.txt"):
|
33
|
-
log.debug(f"processing: {file.name}")
|
34
|
-
with file.open("r") as f:
|
35
|
-
while line := f.readline():
|
36
|
-
if len(line) > 1 and line[0] != "#":
|
37
|
-
file_mods = line.split()
|
38
|
-
log.trace(line[:-1])
|
39
|
-
log.trace(set(file_mods))
|
40
|
-
# remove modules ending in _test
|
41
|
-
file_mods = [m for m in file_mods if not m.endswith("_test")]
|
42
|
-
all_modules = set(all_modules | set(file_mods))
|
43
|
-
log.trace(">" * 40)
|
44
|
-
return {m.replace(".", "/") for m in all_modules}
|
45
|
-
|
46
|
-
|
47
|
-
def update_module_list():
|
48
|
-
"""
|
49
|
-
helper script
|
50
|
-
generate a few lines of code with all modules to be stubbed by createstubs
|
51
|
-
"""
|
52
|
-
#######################################################################
|
53
|
-
# the exceptions
|
54
|
-
#######################################################################
|
55
|
-
mods_problematic = {
|
56
|
-
"upysh",
|
57
|
-
"webrepl_setup",
|
58
|
-
"http_client",
|
59
|
-
"http_client_ssl",
|
60
|
-
"http_server",
|
61
|
-
"http_server_ssl",
|
62
|
-
}
|
63
|
-
mods_excluded = {
|
64
|
-
"__main__",
|
65
|
-
"_main",
|
66
|
-
"_boot",
|
67
|
-
"webrepl",
|
68
|
-
"_webrepl",
|
69
|
-
"port_diag",
|
70
|
-
"example_sub_led",
|
71
|
-
"example_pub_button",
|
72
|
-
"upip",
|
73
|
-
"upip_utarfile",
|
74
|
-
"upysh",
|
75
|
-
"uasyncio",
|
76
|
-
"builtins",
|
77
|
-
"re",
|
78
|
-
}
|
79
|
-
log.info("Update the module list in createstubs.py")
|
80
|
-
all_modules = read_modules()
|
81
|
-
modules_to_stub = sorted(all_modules - set(mods_excluded | mods_problematic))
|
82
|
-
|
83
|
-
# remove pycom MQTT* from defaults
|
84
|
-
modules_to_stub = sorted({m for m in modules_to_stub if not m.startswith("MQTT")})
|
85
|
-
|
86
|
-
log.info(f"modules to stub : {len(modules_to_stub)}")
|
87
|
-
# log.debug(wrapped(modules_to_stub))
|
88
|
-
lines: List[str] = []
|
89
|
-
# update modules.txt
|
90
|
-
modules_txt = Path("src/stubber/board/modulelist.txt")
|
91
|
-
if modules_txt.exists():
|
92
|
-
with open(modules_txt) as f:
|
93
|
-
lines = f.readlines()
|
94
|
-
# only keep comment lines
|
95
|
-
lines = [l for l in lines if l[0] == "#"]
|
96
|
-
else:
|
97
|
-
lines = ["# list of modules to stub."]
|
98
|
-
lines += [m + "\n" for m in modules_to_stub]
|
99
|
-
log.info(f"writing module list to {modules_txt}")
|
100
|
-
with open(modules_txt, "w") as f:
|
101
|
-
f.writelines(lines)
|
102
|
-
|
103
|
-
# update createstubs.py
|
104
|
-
createstubs = Path("src/stubber/board/createstubs.py")
|
105
|
-
if createstubs.exists():
|
106
|
-
with open(createstubs) as f:
|
107
|
-
lines = f.readlines()
|
108
|
-
|
109
|
-
l_start = lines.index(" stubber.modules = [\n")
|
110
|
-
assert l_start
|
111
|
-
l_end = lines.index(" ] # spell-checker: enable\n", l_start)
|
112
|
-
assert l_end
|
113
|
-
|
114
|
-
# Plug in the new list of modules
|
115
|
-
lines = lines[: l_start + 1] + [f' "{m}",\n' for m in modules_to_stub] + lines[l_end:]
|
116
|
-
|
117
|
-
log.info(f"writing updated module list to {createstubs}")
|
118
|
-
with open(createstubs, "w") as f:
|
119
|
-
f.writelines(lines)
|
120
|
-
|
121
|
-
|
122
|
-
if __name__ == "__main__":
|
123
|
-
update_module_list()
|
1
|
+
# pragma: no cover
|
2
|
+
"""
|
3
|
+
generate the list of modules that should be attempted to stub
|
4
|
+
for this :
|
5
|
+
- combine the modules from the different texts files
|
6
|
+
- split the lines into individual module names
|
7
|
+
- combine them in one set
|
8
|
+
- remove the ones than cannot be stubbed
|
9
|
+
- remove test modules, ending in `_test`
|
10
|
+
- write updates to:
|
11
|
+
- board/modulelist.txt
|
12
|
+
- board/createstubs.py
|
13
|
+
"""
|
14
|
+
|
15
|
+
from pathlib import Path
|
16
|
+
from typing import List, Optional, Set
|
17
|
+
|
18
|
+
from loguru import logger as log
|
19
|
+
|
20
|
+
|
21
|
+
def read_modules(path: Optional[Path] = None) -> Set[str]:
|
22
|
+
"""
|
23
|
+
read text files with modules per firmware.
|
24
|
+
each contains the output of help("modules")
|
25
|
+
- lines starting with # are comments.
|
26
|
+
- split the other lines at whitespace seperator,
|
27
|
+
- and add each module to a set
|
28
|
+
"""
|
29
|
+
path = Path(path or "./data")
|
30
|
+
assert path
|
31
|
+
all_modules: Set[str] = set()
|
32
|
+
for file in path.glob("*.txt"):
|
33
|
+
log.debug(f"processing: {file.name}")
|
34
|
+
with file.open("r") as f:
|
35
|
+
while line := f.readline():
|
36
|
+
if len(line) > 1 and line[0] != "#":
|
37
|
+
file_mods = line.split()
|
38
|
+
log.trace(line[:-1])
|
39
|
+
log.trace(set(file_mods))
|
40
|
+
# remove modules ending in _test
|
41
|
+
file_mods = [m for m in file_mods if not m.endswith("_test")]
|
42
|
+
all_modules = set(all_modules | set(file_mods))
|
43
|
+
log.trace(">" * 40)
|
44
|
+
return {m.replace(".", "/") for m in all_modules}
|
45
|
+
|
46
|
+
|
47
|
+
def update_module_list():
|
48
|
+
"""
|
49
|
+
helper script
|
50
|
+
generate a few lines of code with all modules to be stubbed by createstubs
|
51
|
+
"""
|
52
|
+
#######################################################################
|
53
|
+
# the exceptions
|
54
|
+
#######################################################################
|
55
|
+
mods_problematic = {
|
56
|
+
"upysh",
|
57
|
+
"webrepl_setup",
|
58
|
+
"http_client",
|
59
|
+
"http_client_ssl",
|
60
|
+
"http_server",
|
61
|
+
"http_server_ssl",
|
62
|
+
}
|
63
|
+
mods_excluded = {
|
64
|
+
"__main__",
|
65
|
+
"_main",
|
66
|
+
"_boot",
|
67
|
+
"webrepl",
|
68
|
+
"_webrepl",
|
69
|
+
"port_diag",
|
70
|
+
"example_sub_led",
|
71
|
+
"example_pub_button",
|
72
|
+
"upip",
|
73
|
+
"upip_utarfile",
|
74
|
+
"upysh",
|
75
|
+
"uasyncio",
|
76
|
+
"builtins",
|
77
|
+
"re",
|
78
|
+
}
|
79
|
+
log.info("Update the module list in createstubs.py")
|
80
|
+
all_modules = read_modules()
|
81
|
+
modules_to_stub = sorted(all_modules - set(mods_excluded | mods_problematic))
|
82
|
+
|
83
|
+
# remove pycom MQTT* from defaults
|
84
|
+
modules_to_stub = sorted({m for m in modules_to_stub if not m.startswith("MQTT")})
|
85
|
+
|
86
|
+
log.info(f"modules to stub : {len(modules_to_stub)}")
|
87
|
+
# log.debug(wrapped(modules_to_stub))
|
88
|
+
lines: List[str] = []
|
89
|
+
# update modules.txt
|
90
|
+
modules_txt = Path("src/stubber/board/modulelist.txt")
|
91
|
+
if modules_txt.exists():
|
92
|
+
with open(modules_txt) as f:
|
93
|
+
lines = f.readlines()
|
94
|
+
# only keep comment lines
|
95
|
+
lines = [l for l in lines if l[0] == "#"]
|
96
|
+
else:
|
97
|
+
lines = ["# list of modules to stub."]
|
98
|
+
lines += [m + "\n" for m in modules_to_stub]
|
99
|
+
log.info(f"writing module list to {modules_txt}")
|
100
|
+
with open(modules_txt, "w") as f:
|
101
|
+
f.writelines(lines)
|
102
|
+
|
103
|
+
# update createstubs.py
|
104
|
+
createstubs = Path("src/stubber/board/createstubs.py")
|
105
|
+
if createstubs.exists():
|
106
|
+
with open(createstubs) as f:
|
107
|
+
lines = f.readlines()
|
108
|
+
|
109
|
+
l_start = lines.index(" stubber.modules = [\n")
|
110
|
+
assert l_start
|
111
|
+
l_end = lines.index(" ] # spell-checker: enable\n", l_start)
|
112
|
+
assert l_end
|
113
|
+
|
114
|
+
# Plug in the new list of modules
|
115
|
+
lines = lines[: l_start + 1] + [f' "{m}",\n' for m in modules_to_stub] + lines[l_end:]
|
116
|
+
|
117
|
+
log.info(f"writing updated module list to {createstubs}")
|
118
|
+
with open(createstubs, "w") as f:
|
119
|
+
f.writelines(lines)
|
120
|
+
|
121
|
+
|
122
|
+
if __name__ == "__main__":
|
123
|
+
update_module_list()
|
stubber/utils/__init__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# type: ignore
|
2
|
-
from .manifest import make_manifest, manifest
|
3
|
-
from .post import do_post_processing
|
4
|
-
from .stubmaker import generate_pyi_files, generate_pyi_from_file
|
5
|
-
from .versions import checkedout_version, clean_version
|
1
|
+
# type: ignore
|
2
|
+
from .manifest import make_manifest, manifest
|
3
|
+
from .post import do_post_processing
|
4
|
+
from .stubmaker import generate_pyi_files, generate_pyi_from_file
|
5
|
+
from .versions import checkedout_version, clean_version
|