micropython-stubber 1.17.5__py3-none-any.whl → 1.19.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.17.5.dist-info → micropython_stubber-1.19.0.dist-info}/METADATA +7 -6
- {micropython_stubber-1.17.5.dist-info → micropython_stubber-1.19.0.dist-info}/RECORD +71 -52
- mpflash/README.md +22 -3
- mpflash/libusb_flash.ipynb +203 -0
- mpflash/mpflash/ask_input.py +234 -0
- mpflash/mpflash/cli_download.py +107 -0
- mpflash/mpflash/cli_flash.py +165 -0
- mpflash/mpflash/cli_group.py +41 -8
- mpflash/mpflash/cli_list.py +41 -0
- mpflash/mpflash/cli_main.py +13 -8
- mpflash/mpflash/common.py +33 -122
- mpflash/mpflash/config.py +9 -0
- mpflash/mpflash/{downloader.py → download.py} +112 -120
- mpflash/mpflash/downloaded.py +108 -0
- mpflash/mpflash/errors.py +5 -0
- mpflash/mpflash/flash.py +69 -0
- mpflash/mpflash/flash_esp.py +17 -23
- mpflash/mpflash/flash_stm32.py +16 -113
- mpflash/mpflash/flash_stm32_cube.py +111 -0
- mpflash/mpflash/flash_stm32_dfu.py +101 -0
- mpflash/mpflash/flash_uf2.py +8 -8
- mpflash/mpflash/flash_uf2_linux.py +25 -12
- mpflash/mpflash/flash_uf2_windows.py +24 -12
- mpflash/mpflash/list.py +34 -37
- mpflash/mpflash/logger.py +12 -13
- mpflash/mpflash/mpboard_id/__init__.py +96 -0
- mpflash/mpflash/mpboard_id/board_id.py +63 -0
- mpflash/mpflash/mpboard_id/board_info.csv +2213 -0
- mpflash/mpflash/mpboard_id/board_info.json +19910 -0
- mpflash/mpflash/mpremoteboard/__init__.py +208 -0
- mpflash/mpflash/mpremoteboard/mpy_fw_info.py +141 -0
- {stubber/bulk → mpflash/mpflash/mpremoteboard}/runner.py +22 -5
- mpflash/mpflash/vendor/dfu.py +164 -0
- mpflash/mpflash/vendor/pydfu.py +605 -0
- mpflash/mpflash/vendor/readme.md +3 -0
- mpflash/mpflash/vendor/versions.py +113 -0
- mpflash/mpflash/worklist.py +147 -0
- mpflash/poetry.lock +411 -595
- mpflash/pyproject.toml +24 -8
- mpflash/stm32_udev_rules.md +63 -0
- stubber/__init__.py +1 -1
- stubber/basicgit.py +1 -0
- stubber/board/createstubs.py +10 -4
- stubber/board/createstubs_db.py +11 -5
- stubber/board/createstubs_db_min.py +61 -58
- stubber/board/createstubs_db_mpy.mpy +0 -0
- stubber/board/createstubs_mem.py +11 -5
- stubber/board/createstubs_mem_min.py +56 -53
- stubber/board/createstubs_mem_mpy.mpy +0 -0
- stubber/board/createstubs_min.py +54 -51
- stubber/board/createstubs_mpy.mpy +0 -0
- stubber/bulk/mcu_stubber.py +9 -5
- stubber/codemod/_partials/db_main.py +14 -25
- stubber/codemod/_partials/lvgl_main.py +2 -2
- stubber/codemod/board.py +10 -3
- stubber/commands/clone_cmd.py +7 -7
- stubber/commands/config_cmd.py +3 -0
- stubber/freeze/get_frozen.py +0 -2
- stubber/publish/candidates.py +1 -1
- stubber/publish/package.py +1 -1
- stubber/publish/pathnames.py +1 -1
- stubber/publish/stubpackage.py +1 -0
- stubber/rst/lookup.py +1 -1
- stubber/tools/manifestfile.py +5 -3
- stubber/utils/config.py +26 -36
- stubber/utils/repos.py +2 -2
- stubber/utils/versions.py +1 -0
- mpflash/mpflash/flasher.py +0 -287
- stubber/bulk/board_id.py +0 -40
- stubber/bulk/mpremoteboard.py +0 -141
- {micropython_stubber-1.17.5.dist-info → micropython_stubber-1.19.0.dist-info}/LICENSE +0 -0
- {micropython_stubber-1.17.5.dist-info → micropython_stubber-1.19.0.dist-info}/WHEEL +0 -0
- {micropython_stubber-1.17.5.dist-info → micropython_stubber-1.19.0.dist-info}/entry_points.txt +0 -0
- /mpflash/mpflash/{uf2_boardid.py → flash_uf2_boardid.py} +0 -0
@@ -1,13 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: micropython-stubber
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.19.0
|
4
4
|
Summary: Tooling to create and maintain stubs for MicroPython
|
5
5
|
Home-page: https://github.com/Josverl/micropython-stubber#readme
|
6
6
|
License: MIT
|
7
7
|
Keywords: MicroPython,stubs,vscode,pyright,linting,static type check
|
8
8
|
Author: Jos Verlinde
|
9
9
|
Author-email: jos_verlinde@hotmail.com
|
10
|
-
Requires-Python: >=3.9,<
|
10
|
+
Requires-Python: >=3.9,<4.0
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
13
13
|
Classifier: Programming Language :: Python :: 3.9
|
@@ -25,6 +25,7 @@ Requires-Dist: executing (>=2.0.1,<3.0.0)
|
|
25
25
|
Requires-Dist: importlib-metadata (>=1.0,<2.0) ; python_version < "3.8"
|
26
26
|
Requires-Dist: libcst (>=1.1.0,<2.0.0)
|
27
27
|
Requires-Dist: loguru (>=0.6,<0.8)
|
28
|
+
Requires-Dist: mpflash (>=0.6.0)
|
28
29
|
Requires-Dist: mpremote (>=1.22.0,<2.0.0)
|
29
30
|
Requires-Dist: mypy (==1.7.0)
|
30
31
|
Requires-Dist: mypy-gitlab-code-quality (>=1.1.0,<2.0.0)
|
@@ -51,13 +52,13 @@ Description-Content-Type: text/markdown
|
|
51
52
|
|
52
53
|
[](https://pypi.org/project/micropython-stubber/)
|
53
54
|
[](https://badgen.net/pypi/python/micropython-stubber)
|
54
|
-
[](https://github.com/python/black "Black badge")
|
55
56
|
[](https://github.com/josverl/micropython-stubber/stargazers)
|
56
57
|
[](#Contributions)
|
57
58
|
<!-- break -->
|
58
|
-
[](https://github.com/Josverl/micropython-stubber/actions/workflows/pytest.yml)
|
60
|
+
[](https://github.com/Josverl/micropython-stubber/actions/workflows/pytest_mpflash.yml)
|
61
|
+
[](https://micropython-stubber.readthedocs.io/en/latest/?badge=latest "Document build status badge")
|
61
62
|
<!-- break -->
|
62
63
|
[](https://open.vscode.dev/josverl/micropython-stubber)
|
@@ -1,54 +1,73 @@
|
|
1
|
+
mpflash/libusb_flash.ipynb,sha256=sw5MVQvPmH-DJy9kOdXyO80BSjEPMEXf_GJsGk3usrc,6428
|
1
2
|
mpflash/mpflash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
mpflash/mpflash/
|
3
|
-
mpflash/mpflash/
|
4
|
-
mpflash/mpflash/
|
5
|
-
mpflash/mpflash/
|
6
|
-
mpflash/mpflash/
|
7
|
-
mpflash/mpflash/
|
8
|
-
mpflash/mpflash/
|
9
|
-
mpflash/mpflash/
|
10
|
-
mpflash/mpflash/
|
11
|
-
mpflash/mpflash/
|
12
|
-
mpflash/mpflash/
|
13
|
-
mpflash/mpflash/
|
14
|
-
mpflash/mpflash/
|
15
|
-
mpflash/mpflash/
|
16
|
-
mpflash/
|
17
|
-
mpflash/
|
18
|
-
mpflash/
|
19
|
-
|
20
|
-
|
3
|
+
mpflash/mpflash/ask_input.py,sha256=NGjCcOx49gW8xuDZK1BQXNOMPy7fUQ5pQamasez1wHI,7793
|
4
|
+
mpflash/mpflash/cli_download.py,sha256=9Rxwo-j7h9_rwMeAgITmfkdiNVi-Wunr1vpx2VjjUNM,3090
|
5
|
+
mpflash/mpflash/cli_flash.py,sha256=bp2AXHYqusVQbIOt12gqkbC4OoVMVV2gsY1fI-Js63M,5482
|
6
|
+
mpflash/mpflash/cli_group.py,sha256=hdyFrxkA_ye5r5bAsOnPr99KV2pfzgDoNXGPjTvEpW0,1946
|
7
|
+
mpflash/mpflash/cli_list.py,sha256=uxTRPdjFWv5ev4E_pz1JYv8DSFLOtZvTKmVmCiRpEC4,1005
|
8
|
+
mpflash/mpflash/cli_main.py,sha256=VxIpmvk3-2Sr1uB1AMT5bRa0TlrbY28ZaYd6NGZnEe0,632
|
9
|
+
mpflash/mpflash/common.py,sha256=lucFGMLl03qz-5Ic2XVv4g5XVt6hloUU6N5v0tSaUYE,1049
|
10
|
+
mpflash/mpflash/config.py,sha256=G6TxliEGxoYXy1SHQYBKgywnKccz9QzD3mGq_Vv1frg,419
|
11
|
+
mpflash/mpflash/download.py,sha256=HhL97PFTts_QhI1121QcWS7Z2nbfqvJ7mof_KFARx6k,10765
|
12
|
+
mpflash/mpflash/downloaded.py,sha256=ADMJqZn7WVcU-Rm2X6RqA8ejtBNBYXcpwxVyT3v7r6s,3803
|
13
|
+
mpflash/mpflash/errors.py,sha256=Q5LR12Wo8iUCg5n_qq4GjdBdBflbvCOdKsRJ5InYRfI,96
|
14
|
+
mpflash/mpflash/flash.py,sha256=YGYXuNNbjro4QvZmpwpLCo86nFsh4UxWrOJHOowUYDY,2490
|
15
|
+
mpflash/mpflash/flash_esp.py,sha256=TjBOk2y1eLrcE8T3iYGypsiskPX7BFNfxYmCuUo_3v4,2316
|
16
|
+
mpflash/mpflash/flash_stm32.py,sha256=d4BoQl3a9Tchnvn2ZTuq2MpYBB4MTaRukwtEncI95k0,823
|
17
|
+
mpflash/mpflash/flash_stm32_cube.py,sha256=w7aGWjReeWUKl0Q3ZjXH8BRqNO1Tk9AO7gtRNUg1c9Y,3970
|
18
|
+
mpflash/mpflash/flash_stm32_dfu.py,sha256=G70EZodWb-aRi507Jxbys-VEwbBGU1oZacow3_nq-d4,2972
|
19
|
+
mpflash/mpflash/flash_uf2.py,sha256=nTbp8MbSZeNVPWPPsQxN1ppTtBGESXMfwZ_qL4Bwkv0,2029
|
20
|
+
mpflash/mpflash/flash_uf2_boardid.py,sha256=WZKucGu_hJ8ymb236uuZbiR6pD6AA_l4LA-7LwtQhq8,414
|
21
|
+
mpflash/mpflash/flash_uf2_linux.py,sha256=LAGkzTImVq-wKo7LGUNlwkUHv1L4rGO7igR5dwxY07o,4298
|
22
|
+
mpflash/mpflash/flash_uf2_windows.py,sha256=dcmA-koavH7duOuNwI0n2aDDbhF1_5ZZ-mXFAXgj8z4,1072
|
23
|
+
mpflash/mpflash/list.py,sha256=7-yW_J-TDGMvRrRfz7clJseiMy4uEgcwyhOaiw5fj1w,2248
|
24
|
+
mpflash/mpflash/logger.py,sha256=dI_H_a7EOdQJyvoeRHQuYeZuTKYVUS3DUPTLhE9rkdM,1098
|
25
|
+
mpflash/mpflash/mpboard_id/__init__.py,sha256=JYGe7VwpBV4ig2M9a6vJUQrMtgdNjZKHt_Z5N13Ycrs,3509
|
26
|
+
mpflash/mpflash/mpboard_id/board_id.py,sha256=NjKkIUv3sw6X60qy--mieQWrle3WNKw5NwAepMenTHI,2230
|
27
|
+
mpflash/mpflash/mpboard_id/board_info.csv,sha256=KPWDo-zHWfrPGQn9oInsDH-5IdCzhBCs6K_YAmqqSpQ,96983
|
28
|
+
mpflash/mpflash/mpboard_id/board_info.json,sha256=JtVyOMIO1O7vLKzJ0hyXQ4JSxXiQBJyay2hjdNLnZM0,674442
|
29
|
+
mpflash/mpflash/mpremoteboard/__init__.py,sha256=NSp71Qynz3hYqLLy0foVqdkURbNxfjUjiQBmaxKFF64,6951
|
30
|
+
mpflash/mpflash/mpremoteboard/mpy_fw_info.py,sha256=6AQbN3jtQgllqWQYl4e-63KeEtV08EXk8_JnM6XBkvo,4554
|
31
|
+
mpflash/mpflash/mpremoteboard/runner.py,sha256=H3W_xGJvjz7TLtlkDQrCLibgegRWGfsaBOABNbAfP_U,4783
|
32
|
+
mpflash/mpflash/vendor/dfu.py,sha256=oK_MRSOyDJrUuS6D24IMIsfL7oLcrvUq0yp_h4WIY2U,5739
|
33
|
+
mpflash/mpflash/vendor/pydfu.py,sha256=_MdBRo1EeNeKDqFPSTB5tNL1jGSBJgsVeVjE5e7Pb8s,20542
|
34
|
+
mpflash/mpflash/vendor/readme.md,sha256=iIIZxuLUIGHQ0KODzYVtMezsztvyxCXcNJp_AzwTIPk,86
|
35
|
+
mpflash/mpflash/vendor/versions.py,sha256=ooRZjeeYepQHwp12hMu2m0p8nZXQ5s942w5mGkKmgeI,3629
|
36
|
+
mpflash/mpflash/worklist.py,sha256=TGVFugEyWn83WKr0wahBBimcfsHMWGo8_QTu4g3ao-0,5266
|
37
|
+
mpflash/poetry.lock,sha256=aLNhsSYBArek4FRGBNKgug8CaczPp5HQMpp-72HUIjI,120374
|
38
|
+
mpflash/pyproject.toml,sha256=nW8qSejU4Xcre0Hea8VdaHmNkgJIz7Jfa8eritQqvWE,1628
|
39
|
+
mpflash/README.md,sha256=q_vVktLk3C_3L5nZT6SfiKs7l4zOSYG03zXrHinOLig,12253
|
40
|
+
mpflash/stm32_udev_rules.md,sha256=uxvC8FvU7K0R1QQUqCIvVfW9yfWYlIHhIVtirAjQVHE,2684
|
41
|
+
stubber/__init__.py,sha256=pDZjJLA29xrsqkB2umvOEbD9Y4Ocr_ZtfLvGnbkt5PQ,49
|
42
|
+
stubber/basicgit.py,sha256=sflgCv7apLbV2w8F6gmhc-3kuqDnnS4tdGol6JT2uTM,9545
|
21
43
|
stubber/board/board_info.csv,sha256=K2VSmfR013fN-oJWkQUmiQ19w09dVwJHDquPy6QmMhY,8627
|
22
44
|
stubber/board/boot.py,sha256=XjWlKErU5nI1HJSugXIP_3hlwgRQboE6sJrpcbSygnk,1120
|
23
|
-
stubber/board/createstubs.py,sha256=
|
24
|
-
stubber/board/createstubs_db.py,sha256=
|
25
|
-
stubber/board/createstubs_db_min.py,sha256=
|
26
|
-
stubber/board/createstubs_db_mpy.mpy,sha256=
|
45
|
+
stubber/board/createstubs.py,sha256=wkLy_1FtoO8dz-LExDjfg6nPvlXEWmS3El9LXw7vwak,32707
|
46
|
+
stubber/board/createstubs_db.py,sha256=nkGOgznP5eaXLi_HXYbKFym-9Xiqpp2Z5gLtkwFVODQ,30445
|
47
|
+
stubber/board/createstubs_db_min.py,sha256=X2I9C2ksaUGd18cWJwITdD4FYWfdkz5ec1Hg0TWC3iU,11473
|
48
|
+
stubber/board/createstubs_db_mpy.mpy,sha256=A-3Ihjd11hf_mV-RgFhcTiLqyAFD2r4x27SHAvoFB9E,9536
|
27
49
|
stubber/board/createstubs_lvgl.py,sha256=CTe7eq1ACRK_JJxavaqDD8znn29nSWJiHHTZ_ps6EhM,27217
|
28
50
|
stubber/board/createstubs_lvgl_min.py,sha256=jLkWYmeboI2A8feMC7pT7cYWttLejQTuX7WAEZCylhw,27207
|
29
51
|
stubber/board/createstubs_lvgl_mpy.mpy,sha256=ex-nlq2V5e8anQBJvRWEEc-FzU7nlwg5NSrZ8vOadIA,9267
|
30
|
-
stubber/board/createstubs_mem.py,sha256=
|
31
|
-
stubber/board/createstubs_mem_min.py,sha256=
|
32
|
-
stubber/board/createstubs_mem_mpy.mpy,sha256=
|
33
|
-
stubber/board/createstubs_min.py,sha256=
|
34
|
-
stubber/board/createstubs_mpy.mpy,sha256=
|
52
|
+
stubber/board/createstubs_mem.py,sha256=r7m6jICvEsCyAkbZ1NfM8J1VizSc7w41QYxI10IaQNo,28779
|
53
|
+
stubber/board/createstubs_mem_min.py,sha256=xsfwYmfUUGtND9J9O9_Eud3hB0EcN2HC1j3a67GkDGk,11019
|
54
|
+
stubber/board/createstubs_mem_mpy.mpy,sha256=QDxiy1nvDJIfj-H40u2WK9DUc4k96Y3efGcqWFhWN7s,9118
|
55
|
+
stubber/board/createstubs_min.py,sha256=6q_4X7j9xpv-rFoGv78TGuhw2CZ-HjEBxccxFbI54V4,13558
|
56
|
+
stubber/board/createstubs_mpy.mpy,sha256=FY3GCxDIa125XAO_wufL3Nx680TY4Npc16t-WMEyp6c,12220
|
35
57
|
stubber/board/fw_info.py,sha256=6AQbN3jtQgllqWQYl4e-63KeEtV08EXk8_JnM6XBkvo,4554
|
36
58
|
stubber/board/info.py,sha256=b7SOPZHVsVhaayKCwVkFZlYu0BW-UFI7LuG1Eop9480,5629
|
37
59
|
stubber/board/main.py,sha256=f6V3tdt6sPZVLuwemT-NLuK9GySfW2c2J6PJMOOWQQw,413
|
38
60
|
stubber/board/modulelist.txt,sha256=UrhmJUkrDaT3-URvVlAoXqOGT7KxfN9BXCM2EcEvpn0,2770
|
39
61
|
stubber/board/pyrightconfig.json,sha256=6oHS4aDOfwKBAFeUPsCGJzEXpUgBZsPaF0M4P-N26D4,1376
|
40
|
-
stubber/bulk/
|
41
|
-
stubber/bulk/mcu_stubber.py,sha256=NvJ8Q8nw09EfUsRg58FOGLldvb3lVIqQ1CHnpIIyeSk,16287
|
42
|
-
stubber/bulk/mpremoteboard.py,sha256=YtaCZBCeS1ZBZrLGI7cVWuM0-0Fyc-hSpxLWofmo0qA,4843
|
43
|
-
stubber/bulk/runner.py,sha256=r6b5V6U6LvYbrHH2L8zWwsaCqoTvgVTdU4w83CUH79Y,4070
|
62
|
+
stubber/bulk/mcu_stubber.py,sha256=_1z0LUzcMbEIXIYInMJcAJZbBPTI8yCHgd1-1nlMscM,16379
|
44
63
|
stubber/codemod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
64
|
stubber/codemod/_partials/__init__.py,sha256=4v1lkgSBzFw08gxwujh5sivpbJbYqg5lZeRzgyvN4TE,1561
|
46
|
-
stubber/codemod/_partials/db_main.py,sha256=
|
47
|
-
stubber/codemod/_partials/lvgl_main.py,sha256=
|
65
|
+
stubber/codemod/_partials/db_main.py,sha256=ZKzxV0LOEyHu1zcsBr4xRf9i1a4Jyh808sdbmcmkrWE,4003
|
66
|
+
stubber/codemod/_partials/lvgl_main.py,sha256=9BAJP6P1R2SQVbNya2ujes35eATa56D_Ri2_PjeRBq0,1964
|
48
67
|
stubber/codemod/_partials/modules_reader.py,sha256=dJj-H0ncUWVtilSyohQ-dyiUZOjQObds_-llwy_LkYU,2046
|
49
68
|
stubber/codemod/add_comment.py,sha256=CZMjtKO9aarZo1E60QXo80CLJAH05z_ylK6Vvjvb0ls,1965
|
50
69
|
stubber/codemod/add_method.py,sha256=fZH-RGi_pzFpi3tF_0AMDbA9A94dlgXMrc3ItpY3Ylw,2609
|
51
|
-
stubber/codemod/board.py,sha256=
|
70
|
+
stubber/codemod/board.py,sha256=HDNS8saQIdoPH74MNG9mte0MRBqCOcy3d6f_I0H9J2I,11881
|
52
71
|
stubber/codemod/enrich.py,sha256=y1qUMnpgMHHgT7hN_Cp5Fmtv3psNAzYM7oHj_bSmT5A,5438
|
53
72
|
stubber/codemod/merge_docstub.py,sha256=0F8_RWVOqwX4PTmxOX0NQrI7rYBkig9n3MHCqkEG5K4,12681
|
54
73
|
stubber/codemod/modify_list.py,sha256=xrpFBKug273D9E02owUheZD418BvsIHIZCFj4YDjTxU,2118
|
@@ -56,8 +75,8 @@ stubber/codemod/utils.py,sha256=itARwbMps9UlzMaf4F3wJLJXJvtD-HYq1T1xw96zmR8,2459
|
|
56
75
|
stubber/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
76
|
stubber/commands/build_cmd.py,sha256=a3wW-SLw0HKl3b_7knqoUjMRHbZ14S6oeIQyEnf5-js,2461
|
58
77
|
stubber/commands/cli.py,sha256=pHtViupghgqKMxbyk5_Zz-qHx6i-BGdnTqRO-kngH2E,1850
|
59
|
-
stubber/commands/clone_cmd.py,sha256=
|
60
|
-
stubber/commands/config_cmd.py,sha256=
|
78
|
+
stubber/commands/clone_cmd.py,sha256=mKTfB9eXKX06lTYyon1VioEDIfTPX5dYp-r9Qo87qIg,2673
|
79
|
+
stubber/commands/config_cmd.py,sha256=8g80QAuqBpYpivf35M2XcNxTOqapCRrnIATyen4cg5I,993
|
61
80
|
stubber/commands/enrich_folder_cmd.py,sha256=aGkydAsjyM9LHB99bcjxz_jyDGgOmisZyysbDhZxres,1853
|
62
81
|
stubber/commands/get_core_cmd.py,sha256=oxiDb_r1Ao9N2maeV0EBKosI4nRDNJkDk52xNunYICM,2226
|
63
82
|
stubber/commands/get_docstubs_cmd.py,sha256=xTkuc7k7Od7LUtt_ZohoHaRuE6qhQ80ST0b0ZHKMJrM,2824
|
@@ -83,27 +102,27 @@ stubber/freeze/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
102
|
stubber/freeze/common.py,sha256=fydpiBQvwwBM-Uib12NG1k51Pm5gUmPa19UFj6ZTD5E,2639
|
84
103
|
stubber/freeze/freeze_folder.py,sha256=9jLa6M1Uie6MOBnXezrrBYkM9sq4Ja6bz7RGsFpIZJw,2491
|
85
104
|
stubber/freeze/freeze_manifest_2.py,sha256=djruxIe8DkkYq9FM4Zj4VQg-UmG8kcYbRiIWIbqgZGk,4061
|
86
|
-
stubber/freeze/get_frozen.py,sha256=
|
105
|
+
stubber/freeze/get_frozen.py,sha256=n1Hh59P88BL9nQnLnjUqnoPToW6pkgN2o1222amxwfM,5290
|
87
106
|
stubber/get_cpython.py,sha256=1YR8QxJq32yI_ZvUVWdNwiTxw2X5F4xdUgCxCFheEpw,3784
|
88
107
|
stubber/get_lobo.py,sha256=jyysWbeEwNuZZtkTudJP1QbyVvh-TwFom5cE7iCi9lE,1776
|
89
108
|
stubber/minify.py,sha256=QC5TbyNH7xJRauo8IMJgMnKGocqdjEXGb6YQgBvMTTA,15026
|
90
109
|
stubber/publish/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
110
|
stubber/publish/bump.py,sha256=qSb1DpaIxgyoH3YcPU1XKyDKgqkomxSm0WWf1sAVh0Y,3262
|
92
|
-
stubber/publish/candidates.py,sha256=
|
111
|
+
stubber/publish/candidates.py,sha256=vR_oNw3fjtWBa6Gvufe28Y6EKV3mWlJ1X6tq9Go0U1g,11576
|
93
112
|
stubber/publish/database.py,sha256=CLy5oiLasA-YzTTXi9d01qLAyk7NpugCDUOa5R9Ac2g,623
|
94
113
|
stubber/publish/defaults.py,sha256=-Ey04lflKVnT0xO8r8AGliQSdtek9Dm_LDjpwvAnAVk,1636
|
95
114
|
stubber/publish/enums.py,sha256=55TrwB7zlbCeXE3EdC4CCVmhRFlie-DlTqFuaAg-qXo,944
|
96
115
|
stubber/publish/helpers.py,sha256=909umfKUHBMBoVnAanop1vKx8loCrWntlfiiG6z89lY,716
|
97
116
|
stubber/publish/merge_docstubs.py,sha256=bo35onpFgcmcqExKSbpbZKprVs2D_feSy0awNZ09a7A,5319
|
98
117
|
stubber/publish/missing_class_methods.py,sha256=i_tPnGpEpmu53N3exPCrwR1HprxxBpgHgLAZSwJCb4o,1823
|
99
|
-
stubber/publish/package.py,sha256=
|
100
|
-
stubber/publish/pathnames.py,sha256=
|
118
|
+
stubber/publish/package.py,sha256=9Op5nPJNOmjTv3QxVeaL86m6Aak2UlUgcQIcDGBbX5w,6320
|
119
|
+
stubber/publish/pathnames.py,sha256=O-9519j6FTIlmTFyDWqCxdG3k8MWhDI89rClBrgUONQ,1811
|
101
120
|
stubber/publish/publish.py,sha256=4CTI3n2DDU8QnrSiaDT2SAqk73tlziPLE4cLt8saDrk,3698
|
102
121
|
stubber/publish/pypi.py,sha256=Mu1F7Xx4e0NPWK1_Erck6QGEfdY8w67EBeWFi6JiAzk,1240
|
103
|
-
stubber/publish/stubpackage.py,sha256=
|
122
|
+
stubber/publish/stubpackage.py,sha256=45yquQiBlJhacYEOmAHP6BgDfl1EtUWjdDLx06rCWgE,44731
|
104
123
|
stubber/rst/__init__.py,sha256=5VcbDCotIICa2xnJDs_gw2sFXpjjGOZZbwCrNKXy1OE,293
|
105
124
|
stubber/rst/classsort.py,sha256=YCmF4QEYXqZ1Yu2FZb1iPQBrVkq-mrZaBaRcSUlC7ZE,2655
|
106
|
-
stubber/rst/lookup.py,sha256=
|
125
|
+
stubber/rst/lookup.py,sha256=9ouUrZO5FoWLMb02C-sUw_IDHrcFldbKgxcEx2J1Wmw,20149
|
107
126
|
stubber/rst/output_dict.py,sha256=cpBXRtUD-uh0EgjWIBiRrMLBmIAEXjoJFSOAg-qJQiU,14755
|
108
127
|
stubber/rst/reader.py,sha256=ZR2vrB0xup7qY2zAC6HKKytaiQjlUdr-gxFGamkSfHQ,33382
|
109
128
|
stubber/rst/report_return.py,sha256=WZJSbgjsjxFeCeY-vLms56gv_x3TubaGXGQ8--d8RqI,2814
|
@@ -111,22 +130,22 @@ stubber/rst/rst_utils.py,sha256=q4MCmhCeI0fnx6KNVdgz1nE4_hAK4T-F7oAMBnmwZ4w,1781
|
|
111
130
|
stubber/stubber.py,sha256=OAGcdE_Mcftx5VHN8ZeuZCgpghI1_CxPMoFSIQiijcg,2081
|
112
131
|
stubber/stubs_from_docs.py,sha256=34hHae5zWjlFyO0lXhEjyV2IyuX4akwO1VNb01ylcLY,2833
|
113
132
|
stubber/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
114
|
-
stubber/tools/manifestfile.py,sha256=
|
133
|
+
stubber/tools/manifestfile.py,sha256=D5Plwj5LRDe6zq5m-ETKfum0vFAykka70WXSEHl83a4,23721
|
115
134
|
stubber/tools/readme.md,sha256=kH7dA2Rs4BLCXa2ILoTDIj3sJHcGYtDPntyxVIOXvtI,199
|
116
135
|
stubber/update_fallback.py,sha256=TMmNr9fGUaxOfgDNPm2iq6wcLpa-m8ijrpnRohbudPI,4713
|
117
136
|
stubber/update_module_list.py,sha256=QJ-c2K1Wf2SQdpMeGvlVabasKqsN9ZQV4ye5PbSpsWE,4640
|
118
137
|
stubber/utils/__init__.py,sha256=nV9FsOZsJ_hXsyUv4j0Qqp-PKycxyIktU9IoLs4kQmQ,225
|
119
|
-
stubber/utils/config.py,sha256=
|
138
|
+
stubber/utils/config.py,sha256=bDdpGsKKrEq0vaoxeGiCWgim7m7-lJVK4jbdsWiG890,4676
|
120
139
|
stubber/utils/makeversionhdr.py,sha256=ZRpClirIzNK4saZHPaDuEpXhBRI_Ow_yZOxeNM3D_Ro,1908
|
121
140
|
stubber/utils/manifest.py,sha256=XBYCkxtYVAdUcch1784eHPAXlXfyfjco4WnRXxBHZYA,3273
|
122
141
|
stubber/utils/post.py,sha256=oSFZdoP6JwEeAOvsBo3kTk7l8ff_AVtL2Y4VIjzujlE,2837
|
123
|
-
stubber/utils/repos.py,sha256=
|
142
|
+
stubber/utils/repos.py,sha256=nNr6Wy-UfIivMPB-1dCzqLJMueqlwQbQA2ha882CnRs,5815
|
124
143
|
stubber/utils/stubmaker.py,sha256=qld_Wfm9f4EuzedXlX1Ky0i0BJdR75oOOTha13_ekz0,5238
|
125
144
|
stubber/utils/typed_config_toml.py,sha256=ikifCIZGNhS_uqsfp6IwIpxdtZqbLtywprjWG_Q0y8o,2629
|
126
|
-
stubber/utils/versions.py,sha256=
|
145
|
+
stubber/utils/versions.py,sha256=R65PAlUCAs9uvTxA6Frco2tHx6ADZCn59JOWI59ZhOo,3790
|
127
146
|
stubber/variants.py,sha256=-o4TgotbKaCcYBdXkutPaBSR1JdxWmOAiuNT1UlahYc,3784
|
128
|
-
micropython_stubber-1.
|
129
|
-
micropython_stubber-1.
|
130
|
-
micropython_stubber-1.
|
131
|
-
micropython_stubber-1.
|
132
|
-
micropython_stubber-1.
|
147
|
+
micropython_stubber-1.19.0.dist-info/entry_points.txt,sha256=NQi_M36fgq5k6giSuASas3LrpF6CVdkzfvJC0ja73_g,55
|
148
|
+
micropython_stubber-1.19.0.dist-info/LICENSE,sha256=Fx9qrL45ayRXgH6QzttboqZEjKXms0w1t_b_nkOqYCU,1572
|
149
|
+
micropython_stubber-1.19.0.dist-info/METADATA,sha256=d4x2LP901BiDUdVHd4g2B7mqF-HgY3gH6qCmbpOkZxA,19096
|
150
|
+
micropython_stubber-1.19.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
151
|
+
micropython_stubber-1.19.0.dist-info/RECORD,,
|
mpflash/README.md
CHANGED
@@ -9,12 +9,28 @@ mpflash has been tested on Windows x64, Linux X64 and ARM64, but not (yet) macOS
|
|
9
9
|
1. List the connected boards including their firmware details, in a tabular or json format
|
10
10
|
2. Download MicroPython firmware for specific boards and versions.
|
11
11
|
3. Flash one or all connected MicroPython boards with a specific firmware or version.
|
12
|
-
Tested ports: rp2, samd, esp32, esp32s3, esp8266 and stm32
|
12
|
+
Tested ports: rp2, samd, esp32, esp32s3, esp8266 and stm32
|
13
13
|
|
14
14
|
## Installation
|
15
15
|
To install mpflash, you can use pip: `pip install mpflash`
|
16
16
|
|
17
|
-
##
|
17
|
+
## Basic usage
|
18
|
+
You can use mpflash to perform various operations on your MicroPython boards. Here is an example of basic usage:
|
19
|
+
|
20
|
+
| Command | Description |
|
21
|
+
|---------|-------------|
|
22
|
+
| `mpflash list` | List the connected board(s) including their firmware details |
|
23
|
+
| `mpflash download` | Download the MicroPython firmware(s) for the connected board(s) |
|
24
|
+
| `mpflash flash` | Flash the latest stable firmware to the connected board(s) |
|
25
|
+
|
26
|
+
|
27
|
+
## Linux permissions to access usb devices
|
28
|
+
In order to flash the firmware to the board, you need to have the correct permissions to access the USB devices.
|
29
|
+
On Windows this will not be an issue, but on Linux you can use udev rules to give non-root users access to the USB devices.
|
30
|
+
[See the stm32_permissions documentation](./stm32_udev_rules.md) for more information.
|
31
|
+
|
32
|
+
|
33
|
+
## Advanced use
|
18
34
|
You can list the connected boards using the following command:
|
19
35
|
```bash
|
20
36
|
$ mpflash list
|
@@ -43,9 +59,12 @@ This will download the latest stable version of the MicroPython firmware for the
|
|
43
59
|
The stable version (default) is determined based on the most recent published release,
|
44
60
|
other optionse are `--version preview` and `--version x.y.z` to download the latest preview or version x.y.z respectively.
|
45
61
|
|
62
|
+
by default the firmware will be downloaded to Downloads in a `firmware` folder in your, but you can specify a different directory using the `--dir` option.
|
63
|
+
|
64
|
+
```bash
|
46
65
|
The directory structure will be something like this:
|
47
66
|
```
|
48
|
-
firmware
|
67
|
+
Downloads/firmware
|
49
68
|
| firmware.jsonl
|
50
69
|
+---esp8266
|
51
70
|
| ESP8266_GENERIC-FLASH_1M-v1.22.2.bin
|
@@ -0,0 +1,203 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "code",
|
5
|
+
"execution_count": 3,
|
6
|
+
"metadata": {},
|
7
|
+
"outputs": [
|
8
|
+
{
|
9
|
+
"data": {
|
10
|
+
"text/plain": [
|
11
|
+
"[<DEVICE ID 0a05:7211 on Bus 002 Address 054>,\n",
|
12
|
+
" <DEVICE ID 0a05:7211 on Bus 002 Address 032>,\n",
|
13
|
+
" <DEVICE ID 045e:0c1e on Bus 002 Address 002>,\n",
|
14
|
+
" <DEVICE ID 045e:07b2 on Bus 002 Address 028>,\n",
|
15
|
+
" <DEVICE ID 045e:0904 on Bus 002 Address 015>,\n",
|
16
|
+
" <DEVICE ID 043e:9a39 on Bus 002 Address 057>,\n",
|
17
|
+
" <DEVICE ID 045e:0901 on Bus 002 Address 006>,\n",
|
18
|
+
" <DEVICE ID 05e3:0610 on Bus 002 Address 010>,\n",
|
19
|
+
" <DEVICE ID 2109:0817 on Bus 001 Address 001>,\n",
|
20
|
+
" <DEVICE ID 045e:0902 on Bus 002 Address 008>,\n",
|
21
|
+
" <DEVICE ID 1000:2000 on Bus 002 Address 016>,\n",
|
22
|
+
" <DEVICE ID 1189:8890 on Bus 002 Address 027>,\n",
|
23
|
+
" <DEVICE ID 2109:0817 on Bus 001 Address 002>,\n",
|
24
|
+
" <DEVICE ID 2109:2812 on Bus 002 Address 025>,\n",
|
25
|
+
" <DEVICE ID 046d:085e on Bus 002 Address 017>,\n",
|
26
|
+
" <DEVICE ID 045e:07c6 on Bus 002 Address 056>,\n",
|
27
|
+
" <DEVICE ID 0bda:5401 on Bus 002 Address 009>,\n",
|
28
|
+
" <DEVICE ID 10c4:ea60 on Bus 002 Address 055>,\n",
|
29
|
+
" <DEVICE ID 2109:2817 on Bus 002 Address 004>,\n",
|
30
|
+
" <DEVICE ID 0bda:5411 on Bus 002 Address 005>,\n",
|
31
|
+
" <DEVICE ID 045e:0900 on Bus 002 Address 003>,\n",
|
32
|
+
" <DEVICE ID 04e8:61f5 on Bus 002 Address 023>,\n",
|
33
|
+
" <DEVICE ID 045e:0903 on Bus 002 Address 020>,\n",
|
34
|
+
" <DEVICE ID 2109:2812 on Bus 002 Address 026>,\n",
|
35
|
+
" <DEVICE ID 8086:a0ed on Bus 002 Address 000>,\n",
|
36
|
+
" <DEVICE ID 2109:2817 on Bus 002 Address 013>,\n",
|
37
|
+
" <DEVICE ID 8087:0029 on Bus 002 Address 001>,\n",
|
38
|
+
" <DEVICE ID 8086:9a13 on Bus 001 Address 000>]"
|
39
|
+
]
|
40
|
+
},
|
41
|
+
"execution_count": 3,
|
42
|
+
"metadata": {},
|
43
|
+
"output_type": "execute_result"
|
44
|
+
}
|
45
|
+
],
|
46
|
+
"source": [
|
47
|
+
"import usb.core\n",
|
48
|
+
"import usb.util\n",
|
49
|
+
"import usb.backend.libusb1 as libusb1\n",
|
50
|
+
"from usb.core import USBError, Device\n",
|
51
|
+
"\n",
|
52
|
+
"from pathlib import Path\n",
|
53
|
+
"import platform\n",
|
54
|
+
"\n",
|
55
|
+
"if platform.system() == \"Windows\":\n",
|
56
|
+
" # on windows you need to use the libusb1 backend\n",
|
57
|
+
" import libusb\n",
|
58
|
+
"\n",
|
59
|
+
" arch = \"x64\" if platform.architecture()[0] == \"64bit\" else \"x86\"\n",
|
60
|
+
" libusb1_dll = Path(libusb.__file__).parent / f\"_platform\\\\_windows\\\\{arch}\\\\libusb-1.0.dll\"\n",
|
61
|
+
"\n",
|
62
|
+
" backend = libusb1.get_backend(find_library=lambda x: libusb1_dll.as_posix())\n",
|
63
|
+
"usb_devices = usb.core.find(backend=backend, find_all=True)\n",
|
64
|
+
"\n",
|
65
|
+
"list(usb_devices)"
|
66
|
+
]
|
67
|
+
},
|
68
|
+
{
|
69
|
+
"cell_type": "code",
|
70
|
+
"execution_count": null,
|
71
|
+
"metadata": {},
|
72
|
+
"outputs": [],
|
73
|
+
"source": [
|
74
|
+
"for d in usb.core.find(backend=backend, find_all=True):\n",
|
75
|
+
" print(f\"Device {d.idVendor:04x}:{d.idProduct:04x}\")\n",
|
76
|
+
" print(f\"{d.iManufacturer=}\")\n",
|
77
|
+
" print(f\"{d.iProduct=}\")\n",
|
78
|
+
" print(f\"{d.bDeviceClass=}\")\n",
|
79
|
+
" print(f\"{d.bDescriptorType=}\")\n",
|
80
|
+
" print(f\"{d.bcdDevice=}\")\n",
|
81
|
+
" print(f\"{d.bcdUSB=}\")\n",
|
82
|
+
" # print(dir(d))\n",
|
83
|
+
" # print(f\" Manufacturer: {usb.util.get_string(dev, dev.iManufacturer)}\")\n",
|
84
|
+
"\n",
|
85
|
+
" print()"
|
86
|
+
]
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"cell_type": "code",
|
90
|
+
"execution_count": null,
|
91
|
+
"metadata": {},
|
92
|
+
"outputs": [],
|
93
|
+
"source": [
|
94
|
+
"import serial.tools.list_ports\n",
|
95
|
+
"\n",
|
96
|
+
"ports = serial.tools.list_ports.comports()\n",
|
97
|
+
"\n",
|
98
|
+
"for port in ports:\n",
|
99
|
+
" print(f\"Port: {port.device}\")\n",
|
100
|
+
" print(f\"Description: {port.description}\")\n",
|
101
|
+
" print(f\"Hardware ID: {port.hwid}\")\n",
|
102
|
+
" print()"
|
103
|
+
]
|
104
|
+
},
|
105
|
+
{
|
106
|
+
"cell_type": "code",
|
107
|
+
"execution_count": null,
|
108
|
+
"metadata": {},
|
109
|
+
"outputs": [],
|
110
|
+
"source": [
|
111
|
+
"from mpflash.vendor import pydfu as pydfu\n",
|
112
|
+
"\n",
|
113
|
+
"try:\n",
|
114
|
+
" pydfu.list_dfu_devices()\n",
|
115
|
+
"except SystemExit:\n",
|
116
|
+
" print(\"No DFU devices found\")"
|
117
|
+
]
|
118
|
+
},
|
119
|
+
{
|
120
|
+
"cell_type": "code",
|
121
|
+
"execution_count": null,
|
122
|
+
"metadata": {},
|
123
|
+
"outputs": [],
|
124
|
+
"source": [
|
125
|
+
"pydfu.init()"
|
126
|
+
]
|
127
|
+
},
|
128
|
+
{
|
129
|
+
"cell_type": "code",
|
130
|
+
"execution_count": null,
|
131
|
+
"metadata": {},
|
132
|
+
"outputs": [],
|
133
|
+
"source": [
|
134
|
+
"dfu_file = Path(\"C:\\\\Users\\\\josverl\\\\Downloads\\\\firmware\\\\stm32\\\\PYBV11-THREAD-v1.23.0-preview.203.dfu\")\n",
|
135
|
+
"\n",
|
136
|
+
"print(\"Read DFU file...\")\n",
|
137
|
+
"elements = pydfu.read_dfu_file(dfu_file)\n",
|
138
|
+
"if not elements:\n",
|
139
|
+
" print(\"No data in dfu file\")"
|
140
|
+
]
|
141
|
+
},
|
142
|
+
{
|
143
|
+
"cell_type": "code",
|
144
|
+
"execution_count": 1,
|
145
|
+
"metadata": {},
|
146
|
+
"outputs": [
|
147
|
+
{
|
148
|
+
"name": "stdout",
|
149
|
+
"output_type": "stream",
|
150
|
+
"text": [
|
151
|
+
"Writing memory...\n"
|
152
|
+
]
|
153
|
+
},
|
154
|
+
{
|
155
|
+
"ename": "NameError",
|
156
|
+
"evalue": "name 'pydfu' is not defined",
|
157
|
+
"output_type": "error",
|
158
|
+
"traceback": [
|
159
|
+
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
160
|
+
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
|
161
|
+
"Cell \u001b[1;32mIn[1], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWriting memory...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 2\u001b[0m \u001b[43mpydfu\u001b[49m\u001b[38;5;241m.\u001b[39mwrite_elements(elements, \u001b[38;5;28;01mFalse\u001b[39;00m, progress\u001b[38;5;241m=\u001b[39mpydfu\u001b[38;5;241m.\u001b[39mcli_progress)\n",
|
162
|
+
"\u001b[1;31mNameError\u001b[0m: name 'pydfu' is not defined"
|
163
|
+
]
|
164
|
+
}
|
165
|
+
],
|
166
|
+
"source": [
|
167
|
+
"print(\"Writing memory...\")\n",
|
168
|
+
"pydfu.write_elements(elements, False, progress=pydfu.cli_progress)"
|
169
|
+
]
|
170
|
+
},
|
171
|
+
{
|
172
|
+
"cell_type": "code",
|
173
|
+
"execution_count": null,
|
174
|
+
"metadata": {},
|
175
|
+
"outputs": [],
|
176
|
+
"source": [
|
177
|
+
"print(\"Exiting DFU...\")\n",
|
178
|
+
"pydfu.exit_dfu()"
|
179
|
+
]
|
180
|
+
}
|
181
|
+
],
|
182
|
+
"metadata": {
|
183
|
+
"kernelspec": {
|
184
|
+
"display_name": ".venv",
|
185
|
+
"language": "python",
|
186
|
+
"name": "python3"
|
187
|
+
},
|
188
|
+
"language_info": {
|
189
|
+
"codemirror_mode": {
|
190
|
+
"name": "ipython",
|
191
|
+
"version": 3
|
192
|
+
},
|
193
|
+
"file_extension": ".py",
|
194
|
+
"mimetype": "text/x-python",
|
195
|
+
"name": "python",
|
196
|
+
"nbconvert_exporter": "python",
|
197
|
+
"pygments_lexer": "ipython3",
|
198
|
+
"version": "3.11.7"
|
199
|
+
}
|
200
|
+
},
|
201
|
+
"nbformat": 4,
|
202
|
+
"nbformat_minor": 2
|
203
|
+
}
|