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.
Files changed (153) hide show
  1. {micropython_stubber-1.23.1.dist-info → micropython_stubber-1.23.2.dist-info}/LICENSE +30 -30
  2. {micropython_stubber-1.23.1.dist-info → micropython_stubber-1.23.2.dist-info}/METADATA +32 -15
  3. micropython_stubber-1.23.2.dist-info/RECORD +158 -0
  4. micropython_stubber-1.23.2.dist-info/entry_points.txt +5 -0
  5. mpflash/README.md +220 -194
  6. mpflash/libusb_flash.ipynb +203 -203
  7. mpflash/mpflash/add_firmware.py +98 -98
  8. mpflash/mpflash/ask_input.py +236 -236
  9. mpflash/mpflash/basicgit.py +284 -284
  10. mpflash/mpflash/bootloader/__init__.py +2 -2
  11. mpflash/mpflash/bootloader/activate.py +60 -60
  12. mpflash/mpflash/bootloader/detect.py +82 -82
  13. mpflash/mpflash/bootloader/manual.py +101 -101
  14. mpflash/mpflash/bootloader/micropython.py +12 -12
  15. mpflash/mpflash/bootloader/touch1200.py +36 -36
  16. mpflash/mpflash/cli_download.py +129 -129
  17. mpflash/mpflash/cli_flash.py +224 -219
  18. mpflash/mpflash/cli_group.py +111 -111
  19. mpflash/mpflash/cli_list.py +87 -81
  20. mpflash/mpflash/cli_main.py +39 -39
  21. mpflash/mpflash/common.py +210 -165
  22. mpflash/mpflash/config.py +44 -44
  23. mpflash/mpflash/connected.py +96 -78
  24. mpflash/mpflash/download.py +364 -364
  25. mpflash/mpflash/downloaded.py +130 -130
  26. mpflash/mpflash/errors.py +9 -9
  27. mpflash/mpflash/flash/__init__.py +55 -55
  28. mpflash/mpflash/flash/esp.py +59 -59
  29. mpflash/mpflash/flash/stm32.py +19 -19
  30. mpflash/mpflash/flash/stm32_dfu.py +104 -104
  31. mpflash/mpflash/flash/uf2/__init__.py +88 -88
  32. mpflash/mpflash/flash/uf2/boardid.py +15 -15
  33. mpflash/mpflash/flash/uf2/linux.py +136 -130
  34. mpflash/mpflash/flash/uf2/macos.py +42 -42
  35. mpflash/mpflash/flash/uf2/uf2disk.py +12 -12
  36. mpflash/mpflash/flash/uf2/windows.py +43 -43
  37. mpflash/mpflash/flash/worklist.py +170 -170
  38. mpflash/mpflash/list.py +106 -99
  39. mpflash/mpflash/logger.py +41 -41
  40. mpflash/mpflash/mpboard_id/__init__.py +93 -93
  41. mpflash/mpflash/mpboard_id/add_boards.py +251 -251
  42. mpflash/mpflash/mpboard_id/board.py +37 -37
  43. mpflash/mpflash/mpboard_id/board_id.py +86 -86
  44. mpflash/mpflash/mpboard_id/store.py +43 -43
  45. mpflash/mpflash/mpremoteboard/__init__.py +266 -222
  46. mpflash/mpflash/mpremoteboard/mpy_fw_info.py +141 -141
  47. mpflash/mpflash/mpremoteboard/runner.py +140 -140
  48. mpflash/mpflash/vendor/click_aliases.py +91 -91
  49. mpflash/mpflash/vendor/dfu.py +165 -165
  50. mpflash/mpflash/vendor/pydfu.py +605 -605
  51. mpflash/mpflash/vendor/readme.md +2 -2
  52. mpflash/mpflash/versions.py +135 -135
  53. mpflash/poetry.lock +1599 -1599
  54. mpflash/pyproject.toml +65 -65
  55. mpflash/stm32_udev_rules.md +62 -62
  56. stubber/__init__.py +3 -3
  57. stubber/board/board_info.csv +193 -193
  58. stubber/board/boot.py +34 -34
  59. stubber/board/createstubs.py +1004 -986
  60. stubber/board/createstubs_db.py +826 -825
  61. stubber/board/createstubs_db_min.py +332 -331
  62. stubber/board/createstubs_db_mpy.mpy +0 -0
  63. stubber/board/createstubs_lvgl.py +741 -741
  64. stubber/board/createstubs_lvgl_min.py +741 -741
  65. stubber/board/createstubs_mem.py +767 -766
  66. stubber/board/createstubs_mem_min.py +307 -306
  67. stubber/board/createstubs_mem_mpy.mpy +0 -0
  68. stubber/board/createstubs_min.py +295 -294
  69. stubber/board/createstubs_mpy.mpy +0 -0
  70. stubber/board/fw_info.py +141 -141
  71. stubber/board/info.py +183 -183
  72. stubber/board/main.py +19 -19
  73. stubber/board/modulelist.txt +247 -247
  74. stubber/board/pyrightconfig.json +34 -34
  75. stubber/bulk/mcu_stubber.py +437 -454
  76. stubber/codemod/_partials/__init__.py +48 -48
  77. stubber/codemod/_partials/db_main.py +147 -147
  78. stubber/codemod/_partials/lvgl_main.py +77 -77
  79. stubber/codemod/_partials/modules_reader.py +80 -80
  80. stubber/codemod/add_comment.py +53 -53
  81. stubber/codemod/add_method.py +65 -65
  82. stubber/codemod/board.py +317 -317
  83. stubber/codemod/enrich.py +151 -145
  84. stubber/codemod/merge_docstub.py +284 -284
  85. stubber/codemod/modify_list.py +54 -54
  86. stubber/codemod/utils.py +56 -56
  87. stubber/commands/build_cmd.py +94 -94
  88. stubber/commands/cli.py +49 -55
  89. stubber/commands/clone_cmd.py +78 -78
  90. stubber/commands/config_cmd.py +29 -29
  91. stubber/commands/enrich_folder_cmd.py +71 -71
  92. stubber/commands/get_core_cmd.py +71 -71
  93. stubber/commands/get_docstubs_cmd.py +92 -89
  94. stubber/commands/get_frozen_cmd.py +117 -114
  95. stubber/commands/get_mcu_cmd.py +102 -61
  96. stubber/commands/merge_cmd.py +66 -66
  97. stubber/commands/publish_cmd.py +118 -118
  98. stubber/commands/stub_cmd.py +31 -31
  99. stubber/commands/switch_cmd.py +62 -62
  100. stubber/commands/variants_cmd.py +48 -48
  101. stubber/cst_transformer.py +178 -178
  102. stubber/data/board_info.csv +193 -193
  103. stubber/data/board_info.json +1729 -1729
  104. stubber/data/micropython_tags.csv +15 -15
  105. stubber/data/requirements-core-micropython.txt +38 -38
  106. stubber/data/requirements-core-pycopy.txt +39 -39
  107. stubber/downloader.py +37 -36
  108. stubber/freeze/common.py +72 -68
  109. stubber/freeze/freeze_folder.py +69 -69
  110. stubber/freeze/freeze_manifest_2.py +126 -113
  111. stubber/freeze/get_frozen.py +131 -127
  112. stubber/get_cpython.py +112 -101
  113. stubber/get_lobo.py +59 -59
  114. stubber/minify.py +423 -419
  115. stubber/publish/bump.py +86 -86
  116. stubber/publish/candidates.py +275 -256
  117. stubber/publish/database.py +18 -18
  118. stubber/publish/defaults.py +40 -40
  119. stubber/publish/enums.py +24 -24
  120. stubber/publish/helpers.py +29 -29
  121. stubber/publish/merge_docstubs.py +136 -130
  122. stubber/publish/missing_class_methods.py +51 -49
  123. stubber/publish/package.py +150 -146
  124. stubber/publish/pathnames.py +51 -51
  125. stubber/publish/publish.py +120 -120
  126. stubber/publish/pypi.py +42 -38
  127. stubber/publish/stubpackage.py +1055 -1027
  128. stubber/rst/__init__.py +9 -9
  129. stubber/rst/classsort.py +78 -77
  130. stubber/rst/lookup.py +533 -530
  131. stubber/rst/output_dict.py +401 -401
  132. stubber/rst/reader.py +814 -814
  133. stubber/rst/report_return.py +77 -69
  134. stubber/rst/rst_utils.py +541 -540
  135. stubber/stubber.py +38 -38
  136. stubber/stubs_from_docs.py +90 -90
  137. stubber/tools/manifestfile.py +654 -654
  138. stubber/tools/readme.md +6 -6
  139. stubber/update_fallback.py +117 -117
  140. stubber/update_module_list.py +123 -123
  141. stubber/utils/__init__.py +6 -6
  142. stubber/utils/config.py +137 -125
  143. stubber/utils/makeversionhdr.py +54 -54
  144. stubber/utils/manifest.py +90 -90
  145. stubber/utils/post.py +80 -79
  146. stubber/utils/repos.py +156 -150
  147. stubber/utils/stubmaker.py +139 -139
  148. stubber/utils/typed_config_toml.py +80 -77
  149. stubber/variants.py +106 -106
  150. micropython_stubber-1.23.1.dist-info/RECORD +0 -159
  151. micropython_stubber-1.23.1.dist-info/entry_points.txt +0 -3
  152. mpflash/basicgit.py +0 -288
  153. {micropython_stubber-1.23.1.dist-info → micropython_stubber-1.23.2.dist-info}/WHEEL +0 -0
stubber/rst/__init__.py CHANGED
@@ -1,9 +1,9 @@
1
- """.rst processing"""
2
- # sourcery skip: no-wildcard-imports
3
- from .classsort import *
4
- from .lookup import *
5
- from .output_dict import *
6
- from .rst_utils import *
7
-
8
- # combine all _all__s
9
- __all__ = classsort.__all__ + lookup.__all__ + output_dict.__all__ + rst_utils.__all__ # type: ignore
1
+ """.rst processing"""
2
+ # sourcery skip: no-wildcard-imports
3
+ from .classsort import *
4
+ from .lookup import *
5
+ from .output_dict import *
6
+ from .rst_utils import *
7
+
8
+ # combine all _all__s
9
+ __all__ = classsort.__all__ + lookup.__all__ + output_dict.__all__ + rst_utils.__all__ # type: ignore
stubber/rst/classsort.py CHANGED
@@ -1,77 +1,78 @@
1
- """
2
- Sort list of classess in parent-child order
3
- note that this does not take multiple inheritance into account
4
- ref : https://stackoverflow.com/questions/34964878/python-generate-a-dictionarytree-from-a-list-of-tuples/35049729#35049729
5
- with modification
6
- """
7
- import re
8
- from typing import List
9
-
10
- from loguru import logger as log
11
-
12
- __all__ = ["sort_classes"]
13
- RE_CLASS = re.compile(r"class\s+(?P<class>\w+)(\((?P<parent>\w*)\))?")
14
-
15
-
16
- def sort_classes(classes: List[str]):
17
- "sort a list of classes to respect the parent-child order"
18
- # Note this only takes single decedents in perspective
19
- # pass 1: create nodes dictionary
20
- nodes = {"": {"id": "root", "children": []}}
21
-
22
- for c in classes:
23
- m = RE_CLASS.match(c)
24
- if m:
25
- # parent_name = m.group("parent")
26
- class_name = m.group("class").strip()
27
- nodes[class_name] = {"id": class_name, "class": c, "children": []}
28
-
29
- # pass 2: create trees and parent-child relations
30
- forest = []
31
- forest.append(nodes[""]) # add root node to connect
32
- for c in classes:
33
- m = RE_CLASS.match(c)
34
- if not m:
35
- continue
36
- if m.group("parent"): # parent specified
37
- parent_name = m.group("parent").split(",")[0].strip() # just use first parent
38
- else:
39
- parent_name = ""
40
-
41
- class_name = m.group("class").strip()
42
- node = nodes[class_name]
43
-
44
- # either make the node a new tree or link it to its parent
45
- if class_name == parent_name:
46
- # start a new tree in the forest
47
- forest.append(node)
48
- else:
49
- # add new_node as child to parent
50
- try:
51
- parent = nodes[parent_name]
52
- except KeyError:
53
- # Parent not defined in this module, add as child to root
54
- parent = nodes[""]
55
- if "children" not in parent:
56
- # ensure parent has a 'children' field
57
- parent["children"] = []
58
- children = parent["children"]
59
- children.append(node) # type:ignore
60
-
61
- # step 3: simple function to print
62
- def list_node(node, sorted: List[str]):
63
- try:
64
- sorted.append(node["class"])
65
- log.trace(node["id"], node["class"])
66
- except KeyError:
67
- log.trace(node["id"])
68
- log.trace(node["id"])
69
- if node.get("children", False):
70
- for child in node["children"]:
71
- list_node(child, sorted)
72
-
73
- l_sorted: List[str] = []
74
-
75
- for node in forest:
76
- list_node(node, l_sorted)
77
- return l_sorted
1
+ """
2
+ Sort list of classess in parent-child order
3
+ note that this does not take multiple inheritance into account
4
+ ref : https://stackoverflow.com/questions/34964878/python-generate-a-dictionarytree-from-a-list-of-tuples/35049729#35049729
5
+ with modification
6
+ """
7
+
8
+ import re
9
+ from typing import List
10
+
11
+ from mpflash.logger import log
12
+
13
+ __all__ = ["sort_classes"]
14
+ RE_CLASS = re.compile(r"class\s+(?P<class>\w+)(\((?P<parent>\w*)\))?")
15
+
16
+
17
+ def sort_classes(classes: List[str]):
18
+ "sort a list of classes to respect the parent-child order"
19
+ # Note this only takes single decedents in perspective
20
+ # pass 1: create nodes dictionary
21
+ nodes = {"": {"id": "root", "children": []}}
22
+
23
+ for c in classes:
24
+ m = RE_CLASS.match(c)
25
+ if m:
26
+ # parent_name = m.group("parent")
27
+ class_name = m.group("class").strip()
28
+ nodes[class_name] = {"id": class_name, "class": c, "children": []}
29
+
30
+ # pass 2: create trees and parent-child relations
31
+ forest = []
32
+ forest.append(nodes[""]) # add root node to connect
33
+ for c in classes:
34
+ m = RE_CLASS.match(c)
35
+ if not m:
36
+ continue
37
+ if m.group("parent"): # parent specified
38
+ parent_name = m.group("parent").split(",")[0].strip() # just use first parent
39
+ else:
40
+ parent_name = ""
41
+
42
+ class_name = m.group("class").strip()
43
+ node = nodes[class_name]
44
+
45
+ # either make the node a new tree or link it to its parent
46
+ if class_name == parent_name:
47
+ # start a new tree in the forest
48
+ forest.append(node)
49
+ else:
50
+ # add new_node as child to parent
51
+ try:
52
+ parent = nodes[parent_name]
53
+ except KeyError:
54
+ # Parent not defined in this module, add as child to root
55
+ parent = nodes[""]
56
+ if "children" not in parent:
57
+ # ensure parent has a 'children' field
58
+ parent["children"] = []
59
+ children = parent["children"]
60
+ children.append(node) # type:ignore
61
+
62
+ # step 3: simple function to print
63
+ def list_node(node, sorted: List[str]):
64
+ try:
65
+ sorted.append(node["class"])
66
+ log.trace(node["id"], node["class"])
67
+ except KeyError:
68
+ log.trace(node["id"])
69
+ log.trace(node["id"])
70
+ if node.get("children", False):
71
+ for child in node["children"]:
72
+ list_node(child, sorted)
73
+
74
+ l_sorted: List[str] = []
75
+
76
+ for node in forest:
77
+ list_node(node, l_sorted)
78
+ return l_sorted