micropython-stubber 1.20.4__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.
- {micropython_stubber-1.20.4.dist-info → micropython_stubber-1.20.6.dist-info}/LICENSE +30 -30
- {micropython_stubber-1.20.4.dist-info → micropython_stubber-1.20.6.dist-info}/METADATA +4 -4
- micropython_stubber-1.20.6.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 -226
- mpflash/mpflash/bootloader/__init__.py +37 -0
- mpflash/mpflash/bootloader/manual.py +102 -0
- mpflash/mpflash/bootloader/micropython.py +10 -0
- mpflash/mpflash/bootloader/touch1200.py +45 -0
- mpflash/mpflash/cli_download.py +129 -128
- mpflash/mpflash/cli_flash.py +219 -212
- mpflash/mpflash/cli_group.py +98 -92
- mpflash/mpflash/cli_list.py +81 -77
- mpflash/mpflash/cli_main.py +41 -38
- mpflash/mpflash/common.py +164 -151
- mpflash/mpflash/config.py +47 -31
- mpflash/mpflash/connected.py +74 -74
- mpflash/mpflash/download.py +360 -361
- mpflash/mpflash/downloaded.py +129 -129
- mpflash/mpflash/errors.py +9 -5
- mpflash/mpflash/flash.py +52 -69
- mpflash/mpflash/flash_esp.py +59 -59
- mpflash/mpflash/flash_stm32.py +24 -24
- mpflash/mpflash/flash_stm32_cube.py +111 -111
- mpflash/mpflash/flash_stm32_dfu.py +101 -101
- mpflash/mpflash/flash_uf2.py +67 -67
- mpflash/mpflash/flash_uf2_boardid.py +15 -15
- mpflash/mpflash/flash_uf2_linux.py +123 -123
- mpflash/mpflash/flash_uf2_macos.py +34 -37
- mpflash/mpflash/flash_uf2_windows.py +34 -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 +221 -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 -0
- 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 +170 -170
- mpflash/poetry.lock +1588 -1623
- mpflash/pyproject.toml +60 -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 -987
- stubber/board/createstubs_db.py +825 -826
- 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 -767
- 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 -455
- stubber/codemod/_partials/__init__.py +48 -50
- 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 +51 -51
- stubber/commands/clone_cmd.py +66 -66
- stubber/commands/config_cmd.py +29 -29
- stubber/commands/enrich_folder_cmd.py +70 -70
- stubber/commands/get_core_cmd.py +69 -69
- stubber/commands/get_docstubs_cmd.py +87 -87
- stubber/commands/get_frozen_cmd.py +112 -112
- stubber/commands/get_mcu_cmd.py +56 -56
- stubber/commands/merge_cmd.py +66 -66
- stubber/commands/publish_cmd.py +119 -119
- stubber/commands/stub_cmd.py +30 -30
- stubber/commands/switch_cmd.py +54 -54
- 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 +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 -283
- stubber/publish/database.py +18 -18
- stubber/publish/defaults.py +45 -45
- stubber/publish/enums.py +24 -30
- 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 -177
- stubber/publish/pathnames.py +51 -51
- stubber/publish/publish.py +120 -121
- 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 -823
- 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 +610 -610
- stubber/tools/readme.md +5 -5
- stubber/update_fallback.py +117 -117
- stubber/update_module_list.py +123 -125
- 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.4.dist-info/RECORD +0 -154
- {micropython_stubber-1.20.4.dist-info → micropython_stubber-1.20.6.dist-info}/WHEEL +0 -0
- {micropython_stubber-1.20.4.dist-info → micropython_stubber-1.20.6.dist-info}/entry_points.txt +0 -0
stubber/publish/publish.py
CHANGED
@@ -1,121 +1,120 @@
|
|
1
|
-
"""
|
2
|
-
prepare a set of stub files for publishing to PyPi
|
3
|
-
|
4
|
-
!!Note: anything excluded in .gitignore is not packaged by poetry
|
5
|
-
"""
|
6
|
-
|
7
|
-
from typing import Any, Dict, List, Optional, Union
|
8
|
-
|
9
|
-
from loguru import logger as log
|
10
|
-
|
11
|
-
from stubber.publish.candidates import board_candidates, filter_list
|
12
|
-
from stubber.publish.database import get_database
|
13
|
-
from stubber.publish.defaults import GENERIC_U
|
14
|
-
from stubber.publish.
|
15
|
-
from stubber.
|
16
|
-
from stubber.utils.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
package.
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
-
worklist =
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
return worklist
|
1
|
+
"""
|
2
|
+
prepare a set of stub files for publishing to PyPi
|
3
|
+
|
4
|
+
!!Note: anything excluded in .gitignore is not packaged by poetry
|
5
|
+
"""
|
6
|
+
|
7
|
+
from typing import Any, Dict, List, Optional, Union
|
8
|
+
|
9
|
+
from loguru import logger as log
|
10
|
+
|
11
|
+
from stubber.publish.candidates import board_candidates, filter_list
|
12
|
+
from stubber.publish.database import get_database
|
13
|
+
from stubber.publish.defaults import GENERIC_U
|
14
|
+
from stubber.publish.package import get_package
|
15
|
+
from stubber.utils.config import CONFIG
|
16
|
+
from stubber.utils.versions import V_PREVIEW
|
17
|
+
|
18
|
+
|
19
|
+
def build_multiple(
|
20
|
+
family: str = "micropython",
|
21
|
+
versions: Optional[List[str]] = None,
|
22
|
+
ports: Optional[List[str]] = None,
|
23
|
+
boards: Optional[List[str]] = None,
|
24
|
+
production: bool = False,
|
25
|
+
clean: bool = False,
|
26
|
+
force: bool = False,
|
27
|
+
) -> List[Dict[str, Any]]: # sourcery skip: default-mutable-arg
|
28
|
+
"""
|
29
|
+
Build a bunch of stub packages
|
30
|
+
"""
|
31
|
+
# default parameter values
|
32
|
+
versions = versions or [V_PREVIEW]
|
33
|
+
ports = ports or ["all"]
|
34
|
+
boards = boards or [GENERIC_U]
|
35
|
+
|
36
|
+
db = get_database(CONFIG.publish_path, production=production)
|
37
|
+
results: List[Dict[str, Any]] = []
|
38
|
+
worklist = build_worklist(family, versions, ports, boards)
|
39
|
+
if len(worklist) == 0:
|
40
|
+
log.error("Could not find any packages that can be build.")
|
41
|
+
return results
|
42
|
+
log.info(f"checking {len(worklist)} possible board candidates")
|
43
|
+
|
44
|
+
for todo in worklist:
|
45
|
+
if package := get_package(db, **todo):
|
46
|
+
package.build_distribution(force=force, production=production)
|
47
|
+
results.append(package.status)
|
48
|
+
else:
|
49
|
+
log.error(f"Failed to create package for {todo}")
|
50
|
+
return results
|
51
|
+
|
52
|
+
|
53
|
+
def publish_multiple(
|
54
|
+
family: str = "micropython",
|
55
|
+
versions: Optional[List[str]] = None,
|
56
|
+
ports: Optional[List[str]] = None,
|
57
|
+
boards: Optional[List[str]] = None,
|
58
|
+
production: bool = False,
|
59
|
+
clean: bool = False,
|
60
|
+
build: bool = False,
|
61
|
+
force: bool = False,
|
62
|
+
dry_run: bool = False,
|
63
|
+
) -> List[Dict[str, Any]]: # sourcery skip: default-mutable-arg
|
64
|
+
"""
|
65
|
+
Publish a bunch of stub packages
|
66
|
+
"""
|
67
|
+
# default parameter values
|
68
|
+
versions = versions or [V_PREVIEW]
|
69
|
+
ports = ports or ["all"]
|
70
|
+
boards = boards or [GENERIC_U]
|
71
|
+
|
72
|
+
db = get_database(CONFIG.publish_path, production=production)
|
73
|
+
results = []
|
74
|
+
worklist = build_worklist(family, versions, ports, boards)
|
75
|
+
|
76
|
+
if len(worklist) == 0:
|
77
|
+
log.error("Could not find any packages than can be published.")
|
78
|
+
return results
|
79
|
+
|
80
|
+
for todo in worklist:
|
81
|
+
if package := get_package(db, **todo):
|
82
|
+
package.publish_distribution_ifchanged(
|
83
|
+
db=db,
|
84
|
+
clean=clean,
|
85
|
+
force=force,
|
86
|
+
build=build,
|
87
|
+
production=production,
|
88
|
+
dry_run=dry_run,
|
89
|
+
)
|
90
|
+
results.append(package.status)
|
91
|
+
else:
|
92
|
+
log.error(f"Failed to create package for {todo}")
|
93
|
+
return results
|
94
|
+
|
95
|
+
|
96
|
+
def build_worklist(
|
97
|
+
family: str,
|
98
|
+
versions: Union[List[str], str],
|
99
|
+
ports: Union[List[str], str],
|
100
|
+
boards: Union[List[str], str],
|
101
|
+
):
|
102
|
+
"""Build a worklist of packages to build or publish, and filter to only the requested ports and boards"""
|
103
|
+
if isinstance(versions, str):
|
104
|
+
versions = [versions]
|
105
|
+
if isinstance(ports, str):
|
106
|
+
ports = [ports]
|
107
|
+
if isinstance(boards, str):
|
108
|
+
boards = [boards]
|
109
|
+
if family != "micropython":
|
110
|
+
return []
|
111
|
+
# get all the candidates
|
112
|
+
worklist = list(board_candidates(family=family, versions=versions))
|
113
|
+
worklist = filter_list(worklist, ports, boards)
|
114
|
+
|
115
|
+
for b in boards:
|
116
|
+
if b == "auto":
|
117
|
+
continue
|
118
|
+
if not any(i for i in worklist if i["board"].lower() == b.lower()):
|
119
|
+
log.warning(f"Could not find any package candidate for board {b}")
|
120
|
+
return worklist
|
stubber/publish/pypi.py
CHANGED
@@ -1,38 +1,38 @@
|
|
1
|
-
"""
|
2
|
-
Read versions published to PyPi or test.PyPi.
|
3
|
-
uses the pypi-simple package to get the versions from the simple index.
|
4
|
-
"""
|
5
|
-
|
6
|
-
from typing import Optional
|
7
|
-
|
8
|
-
from packaging.version import Version, parse
|
9
|
-
from pypi_simple import PyPISimple, NoSuchProjectError
|
10
|
-
from loguru import logger as log
|
11
|
-
|
12
|
-
|
13
|
-
def get_pypi_versions(package_name: str, base: Optional[Version] = None, production: bool = True):
|
14
|
-
"""Get all versions of a package from a PyPI endpoint."""
|
15
|
-
package_info = None
|
16
|
-
if production:
|
17
|
-
endpoint = "https://pypi.org/simple/"
|
18
|
-
else:
|
19
|
-
endpoint = "https://test.pypi.org/simple/"
|
20
|
-
|
21
|
-
try:
|
22
|
-
with PyPISimple(endpoint=endpoint) as client:
|
23
|
-
package_info = client.get_project_page(project=package_name)
|
24
|
-
except NoSuchProjectError:
|
25
|
-
log.debug(f"Package {package_name} not found on {endpoint}")
|
26
|
-
return []
|
27
|
-
|
28
|
-
if not package_info:
|
29
|
-
return []
|
30
|
-
|
31
|
-
versions = [parse(pkg.version) for pkg in package_info.packages if pkg.package_type == "wheel" and pkg.version]
|
32
|
-
# print(versions)
|
33
|
-
|
34
|
-
if base:
|
35
|
-
# if base provided then filter
|
36
|
-
versions = [v for v in versions if v.base_version == base.base_version]
|
37
|
-
|
38
|
-
return sorted(versions)
|
1
|
+
"""
|
2
|
+
Read versions published to PyPi or test.PyPi.
|
3
|
+
uses the pypi-simple package to get the versions from the simple index.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from typing import Optional
|
7
|
+
|
8
|
+
from packaging.version import Version, parse
|
9
|
+
from pypi_simple import PyPISimple, NoSuchProjectError
|
10
|
+
from loguru import logger as log
|
11
|
+
|
12
|
+
|
13
|
+
def get_pypi_versions(package_name: str, base: Optional[Version] = None, production: bool = True):
|
14
|
+
"""Get all versions of a package from a PyPI endpoint."""
|
15
|
+
package_info = None
|
16
|
+
if production:
|
17
|
+
endpoint = "https://pypi.org/simple/"
|
18
|
+
else:
|
19
|
+
endpoint = "https://test.pypi.org/simple/"
|
20
|
+
|
21
|
+
try:
|
22
|
+
with PyPISimple(endpoint=endpoint) as client:
|
23
|
+
package_info = client.get_project_page(project=package_name)
|
24
|
+
except NoSuchProjectError:
|
25
|
+
log.debug(f"Package {package_name} not found on {endpoint}")
|
26
|
+
return []
|
27
|
+
|
28
|
+
if not package_info:
|
29
|
+
return []
|
30
|
+
|
31
|
+
versions = [parse(pkg.version) for pkg in package_info.packages if pkg.package_type == "wheel" and pkg.version]
|
32
|
+
# print(versions)
|
33
|
+
|
34
|
+
if base:
|
35
|
+
# if base provided then filter
|
36
|
+
versions = [v for v in versions if v.base_version == base.base_version]
|
37
|
+
|
38
|
+
return sorted(versions)
|