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
@@ -1,111 +1,111 @@
1
- """
2
- Main entry point for the CLI group.
3
- Additional comands are added in the submodules.
4
- """
5
-
6
- import rich_click as click
7
-
8
- from mpflash.vendor.click_aliases import ClickAliasedGroup
9
-
10
- from .config import __version__, config
11
- from .logger import log, make_quiet, set_loglevel
12
-
13
-
14
- def cb_verbose(ctx, param, value):
15
- """Callback to set the log level to DEBUG if verbose is set"""
16
- if value and not config.quiet:
17
- # log.debug(f"Setting verbose mode to {value}")
18
- config.verbose = True
19
- if value > 1:
20
- set_loglevel("TRACE")
21
- else:
22
- set_loglevel("DEBUG")
23
- log.debug(f"version: {__version__}")
24
- else:
25
- set_loglevel("INFO")
26
- config.verbose = False
27
- return value
28
-
29
-
30
- def cb_interactive(ctx, param, value: bool):
31
- log.trace(f"Setting interactive mode to {value}")
32
- config.interactive = value
33
- return value
34
-
35
-
36
- def cb_test(ctx, param, value):
37
- if value:
38
- log.trace(f"Setting tests to {value}")
39
- config.tests = value
40
- return value
41
-
42
- def cb_usb(ctx, param, value: bool):
43
- config.usb = bool(value)
44
- return value
45
-
46
-
47
- def cb_quiet(ctx, param, value):
48
- log.trace(f"Setting quiet mode to {value}")
49
- if value:
50
- make_quiet()
51
- return value
52
-
53
-
54
- @click.group(cls=ClickAliasedGroup)
55
- # @click.group()
56
- @click.version_option(package_name="mpflash")
57
- @click.option(
58
- "--quiet",
59
- "-q",
60
- is_eager=True,
61
- is_flag=True,
62
- help="Suppresses all output.",
63
- callback=cb_quiet,
64
- envvar="MPFLASH_QUIET",
65
- show_default=True,
66
- )
67
- @click.option(
68
- "--interactive/--no-interactive",
69
- "-i/-x",
70
- is_eager=True,
71
- help="Suppresses all request for Input.",
72
- callback=cb_interactive,
73
- # envvar="MPFLASH_QUIET",
74
- default=True,
75
- show_default=True,
76
- )
77
- @click.option(
78
- "-V",
79
- "--verbose",
80
- is_eager=True,
81
- count=True,
82
- help="Enables verbose mode.",
83
- callback=cb_verbose,
84
- )
85
- @click.option(
86
- "--usb",
87
- "-u",
88
- is_eager=True,
89
- is_flag=True,
90
- default=False,
91
- help="Shows USB location of the connected boards.",
92
- callback=cb_usb,
93
- show_default=True,
94
- )
95
- @click.option(
96
- "--test",
97
- is_eager=True,
98
- help="Test a specific feature.",
99
- callback=cb_test,
100
- multiple=True,
101
- default=[],
102
- envvar="MPFLASH_TEST",
103
- metavar="FLAG",
104
- )
105
- def cli(**kwargs):
106
- """mpflash - MicroPython flashing tool.
107
-
108
- A CLI to download and flash MicroPython firmware to different ports and boards.
109
- """
110
- # all functionality is added in the submodules
111
- pass
1
+ """
2
+ Main entry point for the CLI group.
3
+ Additional comands are added in the submodules.
4
+ """
5
+
6
+ import rich_click as click
7
+
8
+ from mpflash.vendor.click_aliases import ClickAliasedGroup
9
+
10
+ from .config import __version__, config
11
+ from .logger import log, make_quiet, set_loglevel
12
+
13
+
14
+ def cb_verbose(ctx, param, value):
15
+ """Callback to set the log level to DEBUG if verbose is set"""
16
+ if value and not config.quiet:
17
+ # log.debug(f"Setting verbose mode to {value}")
18
+ config.verbose = True
19
+ if value > 1:
20
+ set_loglevel("TRACE")
21
+ else:
22
+ set_loglevel("DEBUG")
23
+ log.debug(f"version: {__version__}")
24
+ else:
25
+ set_loglevel("INFO")
26
+ config.verbose = False
27
+ return value
28
+
29
+
30
+ def cb_interactive(ctx, param, value: bool):
31
+ log.trace(f"Setting interactive mode to {value}")
32
+ config.interactive = value
33
+ return value
34
+
35
+
36
+ def cb_test(ctx, param, value):
37
+ if value:
38
+ log.trace(f"Setting tests to {value}")
39
+ config.tests = value
40
+ return value
41
+
42
+ def cb_usb(ctx, param, value: bool):
43
+ config.usb = bool(value)
44
+ return value
45
+
46
+
47
+ def cb_quiet(ctx, param, value):
48
+ log.trace(f"Setting quiet mode to {value}")
49
+ if value:
50
+ make_quiet()
51
+ return value
52
+
53
+
54
+ @click.group(cls=ClickAliasedGroup)
55
+ # @click.group()
56
+ @click.version_option(package_name="mpflash")
57
+ @click.option(
58
+ "--quiet",
59
+ "-q",
60
+ is_eager=True,
61
+ is_flag=True,
62
+ help="Suppresses all output.",
63
+ callback=cb_quiet,
64
+ envvar="MPFLASH_QUIET",
65
+ show_default=True,
66
+ )
67
+ @click.option(
68
+ "--interactive/--no-interactive",
69
+ "-i/-x",
70
+ is_eager=True,
71
+ help="Suppresses all request for Input.",
72
+ callback=cb_interactive,
73
+ # envvar="MPFLASH_QUIET",
74
+ default=True,
75
+ show_default=True,
76
+ )
77
+ @click.option(
78
+ "-V",
79
+ "--verbose",
80
+ is_eager=True,
81
+ count=True,
82
+ help="Enables verbose mode.",
83
+ callback=cb_verbose,
84
+ )
85
+ @click.option(
86
+ "--usb",
87
+ "-u",
88
+ is_eager=True,
89
+ is_flag=True,
90
+ default=False,
91
+ help="Shows USB location of the connected boards.",
92
+ callback=cb_usb,
93
+ show_default=True,
94
+ )
95
+ @click.option(
96
+ "--test",
97
+ is_eager=True,
98
+ help="Test a specific feature.",
99
+ callback=cb_test,
100
+ multiple=True,
101
+ default=[],
102
+ envvar="MPFLASH_TEST",
103
+ metavar="FLAG",
104
+ )
105
+ def cli(**kwargs):
106
+ """mpflash - MicroPython flashing tool.
107
+
108
+ A CLI to download and flash MicroPython firmware to different ports and boards.
109
+ """
110
+ # all functionality is added in the submodules
111
+ pass
@@ -1,81 +1,87 @@
1
- import json
2
- from typing import List
3
-
4
- import rich_click as click
5
- from rich import print
6
-
7
- from .cli_group import cli
8
- from .connected import list_mcus
9
- from .list import show_mcus
10
- from .logger import make_quiet
11
-
12
-
13
- @cli.command(
14
- "list",
15
- help="List the connected MCU boards. alias: devs",
16
- aliases=["devs"],
17
- )
18
- @click.option(
19
- "--json",
20
- "-j",
21
- "as_json",
22
- is_flag=True,
23
- default=False,
24
- show_default=True,
25
- help="""Output in json format""",
26
- )
27
- @click.option(
28
- "--serial",
29
- "--serial-port",
30
- "-s",
31
- "serial",
32
- default=["*"],
33
- multiple=True,
34
- show_default=True,
35
- help="Which serial port(s) to list. ",
36
- metavar="SERIALPORT",
37
- )
38
- @click.option(
39
- "--ignore",
40
- "-i",
41
- is_eager=True,
42
- help="Serial port(s) to ignore. Defaults to MPFLASH_IGNORE.",
43
- multiple=True,
44
- default=[],
45
- envvar="MPFLASH_IGNORE",
46
- show_default=True,
47
- metavar="SERIALPORT",
48
- )
49
- @click.option(
50
- "--bluetooth/--no-bluetooth",
51
- "-b/-nb",
52
- is_flag=True,
53
- default=False,
54
- show_default=True,
55
- help="""Include bluetooth ports in the list""",
56
- )
57
- @click.option(
58
- "--progress/--no-progress",
59
- # "-p/-np", -p is already used for --port
60
- "progress",
61
- is_flag=True,
62
- default=True,
63
- show_default=True,
64
- help="""Show progress""",
65
- )
66
- def cli_list_mcus(serial: List[str], ignore: List[str], bluetooth: bool, as_json: bool, progress: bool = True) -> int:
67
- """List the connected MCU boards, and output in a nice table or json."""
68
- serial = list(serial)
69
- ignore = list(ignore)
70
- if as_json:
71
- # avoid noise in json output
72
- make_quiet()
73
- # TODO? Ask user to select a serialport if [?] is given ?
74
-
75
- conn_mcus = list_mcus(ignore=ignore, include=serial, bluetooth=bluetooth)
76
- if as_json:
77
- print(json.dumps([mcu.__dict__ for mcu in conn_mcus], indent=4))
78
- progress = False
79
- if progress:
80
- show_mcus(conn_mcus, refresh=False)
81
- return 0 if conn_mcus else 1
1
+ import json
2
+ from typing import List
3
+
4
+ import rich_click as click
5
+ from rich import print
6
+
7
+ from .cli_group import cli
8
+ from .connected import list_mcus
9
+ from .list import show_mcus
10
+ from .logger import make_quiet
11
+
12
+
13
+ @cli.command(
14
+ "list",
15
+ help="List the connected MCU boards. alias: devs",
16
+ aliases=["devs"],
17
+ )
18
+ @click.option(
19
+ "--json",
20
+ "-j",
21
+ "as_json",
22
+ is_flag=True,
23
+ default=False,
24
+ show_default=True,
25
+ help="""Output in json format""",
26
+ )
27
+ @click.option(
28
+ "--serial",
29
+ "--serial-port",
30
+ "-s",
31
+ "serial",
32
+ default=["*"],
33
+ multiple=True,
34
+ show_default=True,
35
+ help="Serial port(s) (or globs) to list. ",
36
+ metavar="SERIALPORT",
37
+ )
38
+ @click.option(
39
+ "--ignore",
40
+ "-i",
41
+ is_eager=True,
42
+ help="Serial port(s) (or globs) to ignore. Defaults to MPFLASH_IGNORE.",
43
+ multiple=True,
44
+ default=[],
45
+ envvar="MPFLASH_IGNORE",
46
+ show_default=True,
47
+ metavar="SERIALPORT",
48
+ )
49
+ @click.option(
50
+ "--bluetooth/--no-bluetooth",
51
+ "-b/-nb",
52
+ is_flag=True,
53
+ default=False,
54
+ show_default=True,
55
+ help="""Include bluetooth ports in the list""",
56
+ )
57
+ @click.option(
58
+ "--progress/--no-progress",
59
+ # "-p/-np", -p is already used for --port
60
+ "progress",
61
+ is_flag=True,
62
+ default=True,
63
+ show_default=True,
64
+ help="""Show progress""",
65
+ )
66
+ def cli_list_mcus(serial: List[str], ignore: List[str], bluetooth: bool, as_json: bool, progress: bool = True) -> int:
67
+ """List the connected MCU boards, and output in a nice table or json."""
68
+ serial = list(serial)
69
+ ignore = list(ignore)
70
+ if as_json:
71
+ # avoid noise in json output
72
+ make_quiet()
73
+ # TODO? Ask user to select a serialport if [?] is given ?
74
+
75
+ conn_mcus = list_mcus(ignore=ignore, include=serial, bluetooth=bluetooth)
76
+ # ignore boards that have the [micropython-stubber] ignore flag set
77
+ conn_mcus = [item for item in conn_mcus if not (item.toml.get("mpflash", {}).get("ignore", False))]
78
+ if as_json:
79
+ # remove the path and firmware attibutes from the json output as they are always empty
80
+ for mcu in conn_mcus:
81
+ del mcu.path
82
+ del mcu.firmware
83
+ print(json.dumps([mcu.__dict__ for mcu in conn_mcus], indent=4))
84
+ progress = False
85
+ if progress:
86
+ show_mcus(conn_mcus, refresh=False)
87
+ return 0 if conn_mcus else 1
@@ -1,39 +1,39 @@
1
- """mpflash is a CLI to download and flash MicroPython firmware to various boards."""
2
-
3
- import os
4
-
5
- import click.exceptions as click_exceptions
6
- from loguru import logger as log
7
-
8
- from .cli_download import cli_download
9
- from .cli_flash import cli_flash_board
10
- from .cli_group import cli
11
- from .cli_list import cli_list_mcus
12
-
13
-
14
- def mpflash():
15
- cli.add_command(cli_list_mcus)
16
- cli.add_command(cli_download)
17
- cli.add_command(cli_flash_board)
18
-
19
- # cli(auto_envvar_prefix="MPFLASH")
20
- if False and os.environ.get("COMPUTERNAME").startswith("JOSVERL"):
21
- # intentional less error suppression on dev machine
22
- result = cli(standalone_mode=False)
23
- else:
24
- try:
25
- result = cli(standalone_mode=True)
26
- exit(result)
27
- except AttributeError as e:
28
- log.error(f"Error: {e}")
29
- exit(-1)
30
- except click_exceptions.ClickException as e:
31
- log.error(f"Error: {e}")
32
- exit(-2)
33
- except click_exceptions.Abort as e:
34
- # Aborted - Ctrl-C
35
- exit(-3)
36
-
37
-
38
- if __name__ == "__main__":
39
- mpflash()
1
+ """mpflash is a CLI to download and flash MicroPython firmware to various boards."""
2
+
3
+ import os
4
+
5
+ import click.exceptions as click_exceptions
6
+ from loguru import logger as log
7
+
8
+ from .cli_download import cli_download
9
+ from .cli_flash import cli_flash_board
10
+ from .cli_group import cli
11
+ from .cli_list import cli_list_mcus
12
+
13
+
14
+ def mpflash():
15
+ cli.add_command(cli_list_mcus)
16
+ cli.add_command(cli_download)
17
+ cli.add_command(cli_flash_board)
18
+
19
+ # cli(auto_envvar_prefix="MPFLASH")
20
+ if False and os.environ.get("COMPUTERNAME").startswith("JOSVERL"):
21
+ # intentional less error suppression on dev machine
22
+ result = cli(standalone_mode=False)
23
+ else:
24
+ try:
25
+ result = cli(standalone_mode=True)
26
+ exit(result)
27
+ except AttributeError as e:
28
+ log.error(f"Error: {e}")
29
+ exit(-1)
30
+ except click_exceptions.ClickException as e:
31
+ log.error(f"Error: {e}")
32
+ exit(-2)
33
+ except click_exceptions.Abort as e:
34
+ # Aborted - Ctrl-C
35
+ exit(-3)
36
+
37
+
38
+ if __name__ == "__main__":
39
+ mpflash()