micropython-stubber 1.20.1__py3-none-any.whl → 1.20.4__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.1.dist-info → micropython_stubber-1.20.4.dist-info}/METADATA +4 -3
- {micropython_stubber-1.20.1.dist-info → micropython_stubber-1.20.4.dist-info}/RECORD +58 -51
- {micropython_stubber-1.20.1.dist-info → micropython_stubber-1.20.4.dist-info}/WHEEL +1 -1
- mpflash/README.md +16 -5
- mpflash/mpflash/add_firmware.py +98 -0
- mpflash/mpflash/ask_input.py +97 -120
- mpflash/mpflash/cli_download.py +42 -25
- mpflash/mpflash/cli_flash.py +70 -32
- mpflash/mpflash/cli_group.py +17 -14
- mpflash/mpflash/cli_list.py +39 -3
- mpflash/mpflash/cli_main.py +17 -6
- mpflash/mpflash/common.py +125 -12
- mpflash/mpflash/config.py +12 -0
- mpflash/mpflash/connected.py +74 -0
- mpflash/mpflash/download.py +132 -51
- mpflash/mpflash/downloaded.py +36 -15
- mpflash/mpflash/flash.py +2 -2
- mpflash/mpflash/flash_esp.py +2 -2
- mpflash/mpflash/flash_uf2.py +14 -8
- mpflash/mpflash/flash_uf2_boardid.py +2 -1
- mpflash/mpflash/flash_uf2_linux.py +5 -16
- mpflash/mpflash/flash_uf2_macos.py +37 -0
- mpflash/mpflash/flash_uf2_windows.py +5 -5
- mpflash/mpflash/list.py +57 -57
- mpflash/mpflash/mpboard_id/__init__.py +41 -44
- mpflash/mpflash/mpboard_id/add_boards.py +255 -0
- mpflash/mpflash/mpboard_id/board.py +37 -0
- mpflash/mpflash/mpboard_id/board_id.py +54 -34
- mpflash/mpflash/mpboard_id/board_info.zip +0 -0
- mpflash/mpflash/mpboard_id/store.py +43 -0
- mpflash/mpflash/mpremoteboard/__init__.py +18 -6
- mpflash/mpflash/uf2disk.py +12 -0
- mpflash/mpflash/vendor/basicgit.py +288 -0
- mpflash/mpflash/vendor/dfu.py +1 -0
- mpflash/mpflash/vendor/versions.py +7 -3
- mpflash/mpflash/worklist.py +71 -48
- mpflash/poetry.lock +164 -138
- mpflash/pyproject.toml +18 -15
- stubber/__init__.py +1 -1
- stubber/board/createstubs.py +13 -3
- stubber/board/createstubs_db.py +5 -7
- stubber/board/createstubs_db_min.py +329 -825
- stubber/board/createstubs_db_mpy.mpy +0 -0
- stubber/board/createstubs_mem.py +6 -7
- stubber/board/createstubs_mem_min.py +304 -765
- stubber/board/createstubs_mem_mpy.mpy +0 -0
- stubber/board/createstubs_min.py +293 -975
- stubber/board/createstubs_mpy.mpy +0 -0
- stubber/board/modulelist.txt +10 -0
- stubber/commands/get_core_cmd.py +7 -6
- stubber/commands/get_docstubs_cmd.py +8 -3
- stubber/commands/get_frozen_cmd.py +5 -2
- stubber/publish/publish.py +18 -7
- stubber/update_module_list.py +2 -24
- stubber/utils/makeversionhdr.py +3 -2
- stubber/utils/versions.py +2 -1
- mpflash/mpflash/mpboard_id/board_info.csv +0 -2213
- mpflash/mpflash/mpboard_id/board_info.json +0 -19910
- {micropython_stubber-1.20.1.dist-info → micropython_stubber-1.20.4.dist-info}/LICENSE +0 -0
- {micropython_stubber-1.20.1.dist-info → micropython_stubber-1.20.4.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: micropython-stubber
|
3
|
-
Version: 1.20.
|
3
|
+
Version: 1.20.4
|
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
|
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.9
|
14
14
|
Classifier: Programming Language :: Python :: 3.10
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
16
17
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
17
18
|
Classifier: Programming Language :: Python :: Implementation :: MicroPython
|
18
19
|
Classifier: Topic :: Software Development :: Build Tools
|
@@ -129,8 +130,8 @@ cd my_stub_folder
|
|
129
130
|
mkdir all-stubs
|
130
131
|
|
131
132
|
# clone the micropython repo's and switch to a specific version
|
132
|
-
stubber clone
|
133
|
-
stubber switch
|
133
|
+
stubber clone --add-stubs
|
134
|
+
stubber switch v1.22.2
|
134
135
|
|
135
136
|
# get the document stubs for the current version ( v1.18 )
|
136
137
|
stubber get-docstubs
|
@@ -1,63 +1,70 @@
|
|
1
1
|
mpflash/libusb_flash.ipynb,sha256=7RGtGg1mPPMWrfJOobOfYYwAAhsFpykpTJtfNwevY9o,6631
|
2
2
|
mpflash/mpflash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
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/
|
3
|
+
mpflash/mpflash/add_firmware.py,sha256=u_g9mID557fptLEJ1Nld9n27V1R1og8uEkadm0O3YTw,3435
|
4
|
+
mpflash/mpflash/ask_input.py,sha256=e54WfgktG7Ff8dBUknXioROq3lPNZ-eacUjfmUvFfS0,8496
|
5
|
+
mpflash/mpflash/cli_download.py,sha256=6ctC4ga6q2LcpHUHMrz1trbePziQpuIFPbjcJnc3K7E,3645
|
6
|
+
mpflash/mpflash/cli_flash.py,sha256=QHEb-e2ABjISfuGCWpTxOM7kkcTZSQxBXmVaWh3WVnE,7074
|
7
|
+
mpflash/mpflash/cli_group.py,sha256=nrihkm74X8pX1jPM72W8ljoc5rYL6ggGOQFRaOldhLo,2038
|
8
|
+
mpflash/mpflash/cli_list.py,sha256=Mdaf13gKZCoLp8Y2ja0L5rYMzkE_t3d4r62bF7isI3E,1997
|
9
|
+
mpflash/mpflash/cli_main.py,sha256=yABFFf45TpPMcC1qEVARAWe4EI9zui2pUXjoPms0mq8,1030
|
10
|
+
mpflash/mpflash/common.py,sha256=MmyLadb_z7bhVy6U8jb4f3pnBK8n7x28smFBcA9ZfGg,5608
|
11
|
+
mpflash/mpflash/config.py,sha256=R7PomStIFHSTnLhpWhw9P2DL_b-8a8Wrja3aY-dPm6A,762
|
12
|
+
mpflash/mpflash/connected.py,sha256=CBG_DJ33OPWAPbX-ICQpL1LcFOhNYpLUSB0Q5v7gi9s,3029
|
13
|
+
mpflash/mpflash/download.py,sha256=NErA2SJEhXnTElvq6z4BJl-L-5M_ETJpqX6pM0oubsg,14290
|
14
|
+
mpflash/mpflash/downloaded.py,sha256=FQuVl21bx4JotfnXufoihexKeJt3gDMqhSWUvVKBSDk,4868
|
13
15
|
mpflash/mpflash/errors.py,sha256=Q5LR12Wo8iUCg5n_qq4GjdBdBflbvCOdKsRJ5InYRfI,96
|
14
|
-
mpflash/mpflash/flash.py,sha256=
|
15
|
-
mpflash/mpflash/flash_esp.py,sha256=
|
16
|
+
mpflash/mpflash/flash.py,sha256=JoskuwaHVYqeG4YW8kgbv26vPFnqDmkTz1VRs-pTRiY,2468
|
17
|
+
mpflash/mpflash/flash_esp.py,sha256=dEc_B7-f1BMUGBMrwIm83ulcCqaS5MlrPAp3FCNgNfk,2311
|
16
18
|
mpflash/mpflash/flash_stm32.py,sha256=d4BoQl3a9Tchnvn2ZTuq2MpYBB4MTaRukwtEncI95k0,823
|
17
19
|
mpflash/mpflash/flash_stm32_cube.py,sha256=w7aGWjReeWUKl0Q3ZjXH8BRqNO1Tk9AO7gtRNUg1c9Y,3970
|
18
20
|
mpflash/mpflash/flash_stm32_dfu.py,sha256=G70EZodWb-aRi507Jxbys-VEwbBGU1oZacow3_nq-d4,2972
|
19
|
-
mpflash/mpflash/flash_uf2.py,sha256=
|
20
|
-
mpflash/mpflash/flash_uf2_boardid.py,sha256=
|
21
|
-
mpflash/mpflash/flash_uf2_linux.py,sha256=
|
22
|
-
mpflash/mpflash/
|
23
|
-
mpflash/mpflash/
|
21
|
+
mpflash/mpflash/flash_uf2.py,sha256=2IKgEOnlsB9bILJWHILMKbGo9b39NKazBWp1-T_eKKs,2463
|
22
|
+
mpflash/mpflash/flash_uf2_boardid.py,sha256=U5wGM8VA3wEpUxQCMtuXpMZZomdVH8J_Zd5_GekUMuU,423
|
23
|
+
mpflash/mpflash/flash_uf2_linux.py,sha256=Oy9V4g7JSuks2hHFeO_OHdBKSGktbqZOtsivuxfl-xg,4055
|
24
|
+
mpflash/mpflash/flash_uf2_macos.py,sha256=HGUg2HSw4qalfSP7npLYgos2WlVRxtOVTDcAnBL7qPY,1078
|
25
|
+
mpflash/mpflash/flash_uf2_windows.py,sha256=a-iIGPkwIoUXA7atCz0_uZp-kipSL24P-IE5ka1B1Mk,1025
|
26
|
+
mpflash/mpflash/list.py,sha256=0TawTkwhjKPPj7nTHoDn8nQ54WOkGRurP1BJVeg956g,2963
|
24
27
|
mpflash/mpflash/logger.py,sha256=dI_H_a7EOdQJyvoeRHQuYeZuTKYVUS3DUPTLhE9rkdM,1098
|
25
|
-
mpflash/mpflash/mpboard_id/__init__.py,sha256=
|
26
|
-
mpflash/mpflash/mpboard_id/
|
27
|
-
mpflash/mpflash/mpboard_id/
|
28
|
-
mpflash/mpflash/mpboard_id/
|
29
|
-
mpflash/mpflash/
|
28
|
+
mpflash/mpflash/mpboard_id/__init__.py,sha256=9IS8E-4eimd_bclgGgWE1wGEx0IRzKnu5Jzl8pQih_g,3816
|
29
|
+
mpflash/mpflash/mpboard_id/add_boards.py,sha256=OWclyLWf9L-pCVmZ22b-xQYfvi3yQVsJHmGMgMzWxoU,9684
|
30
|
+
mpflash/mpflash/mpboard_id/board.py,sha256=CwtBux8y7GDUe7CADVxL8YefGRl9Fg8OAJBUhgaBYCI,1151
|
31
|
+
mpflash/mpflash/mpboard_id/board_id.py,sha256=uVBbqksE1S4RPO1kNAVk4-xJWj6vwAX6QeuE0ekkZEc,2964
|
32
|
+
mpflash/mpflash/mpboard_id/board_info.zip,sha256=F6YowS96DAqjten4ySe4MXgZwPtE-saZOUfY5OQkqKk,19759
|
33
|
+
mpflash/mpflash/mpboard_id/store.py,sha256=4lLEff6a30lIOb4fOYYzanE4G4qfgikfprmpV1eUf2U,1536
|
34
|
+
mpflash/mpflash/mpremoteboard/__init__.py,sha256=fJ_N1F6R3CfP9F7pmocb5l8yRvzmSmtHi4u_uTQHR1w,7683
|
30
35
|
mpflash/mpflash/mpremoteboard/mpy_fw_info.py,sha256=6AQbN3jtQgllqWQYl4e-63KeEtV08EXk8_JnM6XBkvo,4554
|
31
36
|
mpflash/mpflash/mpremoteboard/runner.py,sha256=-PgzAeBGbyXaAUlwyiw4mcINsP2U1XRRjP1_QdBrxpg,4786
|
32
|
-
mpflash/mpflash/
|
37
|
+
mpflash/mpflash/uf2disk.py,sha256=4_P2l-kedM7VSliA2u706LQLxvu3xWSod1-lj-xjZis,298
|
38
|
+
mpflash/mpflash/vendor/basicgit.py,sha256=sflgCv7apLbV2w8F6gmhc-3kuqDnnS4tdGol6JT2uTM,9545
|
39
|
+
mpflash/mpflash/vendor/dfu.py,sha256=ZXMcE6aH4-43Wh4tbQT4U-q-BU3RUiL3JAxmP_QAK2s,5755
|
33
40
|
mpflash/mpflash/vendor/pydfu.py,sha256=_MdBRo1EeNeKDqFPSTB5tNL1jGSBJgsVeVjE5e7Pb8s,20542
|
34
41
|
mpflash/mpflash/vendor/readme.md,sha256=iIIZxuLUIGHQ0KODzYVtMezsztvyxCXcNJp_AzwTIPk,86
|
35
|
-
mpflash/mpflash/vendor/versions.py,sha256=
|
36
|
-
mpflash/mpflash/worklist.py,sha256=
|
37
|
-
mpflash/poetry.lock,sha256=
|
38
|
-
mpflash/pyproject.toml,sha256=
|
39
|
-
mpflash/README.md,sha256=
|
42
|
+
mpflash/mpflash/vendor/versions.py,sha256=thk1a5wEEhXIQoL0zZ7oooeFyQeSoI00CIUbZF0b3rI,3783
|
43
|
+
mpflash/mpflash/worklist.py,sha256=MKHDynttVP3lsHSfb7DEqeQ2mRV0da96lD4lIcS_zQY,5962
|
44
|
+
mpflash/poetry.lock,sha256=pHC8OhQvF5HWKPlw2Ysd39cL4XmJIqDX_Lwo-ngm1SY,121346
|
45
|
+
mpflash/pyproject.toml,sha256=_5bXWE4UT_tLDBCfel76-sYQHOkreevKnB-CAoMFDNU,1651
|
46
|
+
mpflash/README.md,sha256=1SVCxNG88akXYv1BOeLvqwfI9phy8PdkfJ2sqxL_nkE,13680
|
40
47
|
mpflash/stm32_udev_rules.md,sha256=uxvC8FvU7K0R1QQUqCIvVfW9yfWYlIHhIVtirAjQVHE,2684
|
41
|
-
stubber/__init__.py,sha256=
|
48
|
+
stubber/__init__.py,sha256=fvRhwc22guCsHccJVu9kqJb0i049HoQgIYH47bz171s,49
|
42
49
|
stubber/basicgit.py,sha256=sflgCv7apLbV2w8F6gmhc-3kuqDnnS4tdGol6JT2uTM,9545
|
43
50
|
stubber/board/board_info.csv,sha256=K2VSmfR013fN-oJWkQUmiQ19w09dVwJHDquPy6QmMhY,8627
|
44
51
|
stubber/board/boot.py,sha256=XjWlKErU5nI1HJSugXIP_3hlwgRQboE6sJrpcbSygnk,1120
|
45
|
-
stubber/board/createstubs.py,sha256=
|
46
|
-
stubber/board/createstubs_db.py,sha256=
|
47
|
-
stubber/board/createstubs_db_min.py,sha256=
|
48
|
-
stubber/board/createstubs_db_mpy.mpy,sha256=
|
52
|
+
stubber/board/createstubs.py,sha256=Mheof3vSwjyQTpm6iOBC2Svlnlz4wkIFcGQjE38V2Lk,32958
|
53
|
+
stubber/board/createstubs_db.py,sha256=iYiBM2tqlesMhIsMWsDY0pbOHQWyqW4TK_1q5RlVuUU,30419
|
54
|
+
stubber/board/createstubs_db_min.py,sha256=lzee0uRp9xCdjXL_xzViu-sDS0CrZuQM2MT82vfaYfY,11473
|
55
|
+
stubber/board/createstubs_db_mpy.mpy,sha256=X5lHvAyRh4xR4fdZCV3GrOnhPlNVGjpl5rFIaw-cZvo,9536
|
49
56
|
stubber/board/createstubs_lvgl.py,sha256=CTe7eq1ACRK_JJxavaqDD8znn29nSWJiHHTZ_ps6EhM,27217
|
50
57
|
stubber/board/createstubs_lvgl_min.py,sha256=jLkWYmeboI2A8feMC7pT7cYWttLejQTuX7WAEZCylhw,27207
|
51
58
|
stubber/board/createstubs_lvgl_mpy.mpy,sha256=ex-nlq2V5e8anQBJvRWEEc-FzU7nlwg5NSrZ8vOadIA,9267
|
52
|
-
stubber/board/createstubs_mem.py,sha256=
|
53
|
-
stubber/board/createstubs_mem_min.py,sha256=
|
54
|
-
stubber/board/createstubs_mem_mpy.mpy,sha256=
|
55
|
-
stubber/board/createstubs_min.py,sha256=
|
56
|
-
stubber/board/createstubs_mpy.mpy,sha256=
|
59
|
+
stubber/board/createstubs_mem.py,sha256=3uewT8Nr2ba3vUJzjwNwK8DnHA0bSu7pY8yNMVJownQ,28755
|
60
|
+
stubber/board/createstubs_mem_min.py,sha256=9eUXrJu_kUPvyRU1ceah_WHIz76Jr4XeJ4OlCR0rzgk,11019
|
61
|
+
stubber/board/createstubs_mem_mpy.mpy,sha256=XeprD_VBohq9mHJWMpQAwu8LlbgSoFcCdTnDHhLBCrc,9118
|
62
|
+
stubber/board/createstubs_min.py,sha256=XkBIGgWIK7PeVJ-FhWK0Bsx-GRTJG5b6augb8y-uOLo,13699
|
63
|
+
stubber/board/createstubs_mpy.mpy,sha256=H5j-M9TXlVvaqOIN6ZG6k5oQ7TpLJE18ULXmV50Jdww,12388
|
57
64
|
stubber/board/fw_info.py,sha256=6AQbN3jtQgllqWQYl4e-63KeEtV08EXk8_JnM6XBkvo,4554
|
58
65
|
stubber/board/info.py,sha256=b7SOPZHVsVhaayKCwVkFZlYu0BW-UFI7LuG1Eop9480,5629
|
59
66
|
stubber/board/main.py,sha256=f6V3tdt6sPZVLuwemT-NLuK9GySfW2c2J6PJMOOWQQw,413
|
60
|
-
stubber/board/modulelist.txt,sha256=
|
67
|
+
stubber/board/modulelist.txt,sha256=f5WxcG8OBjwhZFDtvxllGDp-6bmH9M5A9knc_6YE7xI,2900
|
61
68
|
stubber/board/pyrightconfig.json,sha256=6oHS4aDOfwKBAFeUPsCGJzEXpUgBZsPaF0M4P-N26D4,1376
|
62
69
|
stubber/bulk/mcu_stubber.py,sha256=_1z0LUzcMbEIXIYInMJcAJZbBPTI8yCHgd1-1nlMscM,16379
|
63
70
|
stubber/codemod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -78,9 +85,9 @@ stubber/commands/cli.py,sha256=pHtViupghgqKMxbyk5_Zz-qHx6i-BGdnTqRO-kngH2E,1850
|
|
78
85
|
stubber/commands/clone_cmd.py,sha256=mKTfB9eXKX06lTYyon1VioEDIfTPX5dYp-r9Qo87qIg,2673
|
79
86
|
stubber/commands/config_cmd.py,sha256=8g80QAuqBpYpivf35M2XcNxTOqapCRrnIATyen4cg5I,993
|
80
87
|
stubber/commands/enrich_folder_cmd.py,sha256=aGkydAsjyM9LHB99bcjxz_jyDGgOmisZyysbDhZxres,1853
|
81
|
-
stubber/commands/get_core_cmd.py,sha256=
|
82
|
-
stubber/commands/get_docstubs_cmd.py,sha256=
|
83
|
-
stubber/commands/get_frozen_cmd.py,sha256=
|
88
|
+
stubber/commands/get_core_cmd.py,sha256=AsD53kuSJmiWUQ9g1d7qFLX7U-Ej_rtyjt3plOLNjjE,2277
|
89
|
+
stubber/commands/get_docstubs_cmd.py,sha256=AJkPlVmKRqm5f5ChkcQ3sF86adJdx9N_-P-cR0M1bNg,3001
|
90
|
+
stubber/commands/get_frozen_cmd.py,sha256=OyuTXRMbrGG4-CnQpzz9Itli9-dMO5WeEOtX8DIJptk,3941
|
84
91
|
stubber/commands/get_mcu_cmd.py,sha256=uDodn57wdc9rHt7WSmHCFI-zTT1XrebPEaWN-G43E2Y,2015
|
85
92
|
stubber/commands/merge_cmd.py,sha256=2gQYxqapVGD8WMBsqRES7xjIS8acu4hTyutr1OANpAo,1673
|
86
93
|
stubber/commands/publish_cmd.py,sha256=myvgP7Y-pb-nyrMVMelNmIVHbxeK4g1ZXmQtxASblkk,2910
|
@@ -113,7 +120,7 @@ stubber/publish/merge_docstubs.py,sha256=bo35onpFgcmcqExKSbpbZKprVs2D_feSy0awNZ0
|
|
113
120
|
stubber/publish/missing_class_methods.py,sha256=i_tPnGpEpmu53N3exPCrwR1HprxxBpgHgLAZSwJCb4o,1823
|
114
121
|
stubber/publish/package.py,sha256=9Op5nPJNOmjTv3QxVeaL86m6Aak2UlUgcQIcDGBbX5w,6320
|
115
122
|
stubber/publish/pathnames.py,sha256=O-9519j6FTIlmTFyDWqCxdG3k8MWhDI89rClBrgUONQ,1811
|
116
|
-
stubber/publish/publish.py,sha256=
|
123
|
+
stubber/publish/publish.py,sha256=Iguc0e6u0EZY8G33z7JafvKAp1CkvDIXFTBH8oDqNsc,4016
|
117
124
|
stubber/publish/pypi.py,sha256=Mu1F7Xx4e0NPWK1_Erck6QGEfdY8w67EBeWFi6JiAzk,1240
|
118
125
|
stubber/publish/stubpackage.py,sha256=45yquQiBlJhacYEOmAHP6BgDfl1EtUWjdDLx06rCWgE,44731
|
119
126
|
stubber/rst/__init__.py,sha256=5VcbDCotIICa2xnJDs_gw2sFXpjjGOZZbwCrNKXy1OE,293
|
@@ -129,19 +136,19 @@ stubber/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
136
|
stubber/tools/manifestfile.py,sha256=D5Plwj5LRDe6zq5m-ETKfum0vFAykka70WXSEHl83a4,23721
|
130
137
|
stubber/tools/readme.md,sha256=kH7dA2Rs4BLCXa2ILoTDIj3sJHcGYtDPntyxVIOXvtI,199
|
131
138
|
stubber/update_fallback.py,sha256=NUxp1sN1-8BLPd0rpExTcYBppUXYWPP8dOcjNeLY2Zo,4921
|
132
|
-
stubber/update_module_list.py,sha256=
|
139
|
+
stubber/update_module_list.py,sha256=1_dTr33KjJU3MAS5MP6R5S7YIYa2R1IBK4CWpmwusDc,4061
|
133
140
|
stubber/utils/__init__.py,sha256=nV9FsOZsJ_hXsyUv4j0Qqp-PKycxyIktU9IoLs4kQmQ,225
|
134
141
|
stubber/utils/config.py,sha256=Jg4eHhgKim4uP4IqZRWykRNiX1r-SXC2xSrbsVprGAA,4859
|
135
|
-
stubber/utils/makeversionhdr.py,sha256=
|
142
|
+
stubber/utils/makeversionhdr.py,sha256=dO8sWLAY_ifT1IJJ1-JJ2z_thvfqJnK3c1_bHF_UI28,1953
|
136
143
|
stubber/utils/manifest.py,sha256=XBYCkxtYVAdUcch1784eHPAXlXfyfjco4WnRXxBHZYA,3273
|
137
144
|
stubber/utils/post.py,sha256=oSFZdoP6JwEeAOvsBo3kTk7l8ff_AVtL2Y4VIjzujlE,2837
|
138
145
|
stubber/utils/repos.py,sha256=nNr6Wy-UfIivMPB-1dCzqLJMueqlwQbQA2ha882CnRs,5815
|
139
146
|
stubber/utils/stubmaker.py,sha256=qld_Wfm9f4EuzedXlX1Ky0i0BJdR75oOOTha13_ekz0,5238
|
140
147
|
stubber/utils/typed_config_toml.py,sha256=ikifCIZGNhS_uqsfp6IwIpxdtZqbLtywprjWG_Q0y8o,2629
|
141
|
-
stubber/utils/versions.py,sha256=
|
148
|
+
stubber/utils/versions.py,sha256=4cGr-4Nbgqzoi-iJC08b_LFZH-CiyTNODlT-ihv4ZE0,3901
|
142
149
|
stubber/variants.py,sha256=-o4TgotbKaCcYBdXkutPaBSR1JdxWmOAiuNT1UlahYc,3784
|
143
|
-
micropython_stubber-1.20.
|
144
|
-
micropython_stubber-1.20.
|
145
|
-
micropython_stubber-1.20.
|
146
|
-
micropython_stubber-1.20.
|
147
|
-
micropython_stubber-1.20.
|
150
|
+
micropython_stubber-1.20.4.dist-info/entry_points.txt,sha256=NQi_M36fgq5k6giSuASas3LrpF6CVdkzfvJC0ja73_g,55
|
151
|
+
micropython_stubber-1.20.4.dist-info/LICENSE,sha256=Fx9qrL45ayRXgH6QzttboqZEjKXms0w1t_b_nkOqYCU,1572
|
152
|
+
micropython_stubber-1.20.4.dist-info/METADATA,sha256=Hb4UXiHcpXdCA8FG_v0cxH2m8zmSK-amlXIi31HewUQ,19158
|
153
|
+
micropython_stubber-1.20.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
154
|
+
micropython_stubber-1.20.4.dist-info/RECORD,,
|
mpflash/README.md
CHANGED
@@ -1,12 +1,24 @@
|
|
1
1
|
# MPFLASH
|
2
|
+
[](https://pypi.org/project/mpflash/)
|
3
|
+
[](https://badgen.net/pypi/python/mpflash)
|
4
|
+
[](https://pepy.tech/project/mpflash)
|
5
|
+
|
2
6
|
|
3
7
|
`mpflash` is a command-line tool for working with MicroPython firmware. It provides features to help you flash and update Micropython on one or more .
|
4
8
|
|
5
|
-
This tool was initially created to be used in a CI/CD pipeline to automate the process of downloading and flashing MicroPython firmware to multiple boards, but it has been extend with a TUI to
|
9
|
+
This tool was initially created to be used in a CI/CD pipeline to automate the process of downloading and flashing MicroPython firmware to multiple boards, but it has been extend with a TUI to be used for manual downloadig, flashing and development.
|
6
10
|
|
7
|
-
`mpflash` has been tested on
|
8
|
-
|
11
|
+
`mpflash` has been tested on:
|
12
|
+
- OS: Windows x64, Linux X64, but not (yet) macOS.
|
13
|
+
- Micropython (hardware) ports:
|
14
|
+
- `rp2`, using `.uf2`, using filecopy (macos not tested yet)
|
15
|
+
- `samd`, using ` .uf2`, using filecopy (macos not tested yet)
|
16
|
+
- `esp32`, using `.bin`, using esptool,
|
17
|
+
- `esp8266`, using `.bin`, using esptool
|
18
|
+
- `stm32`, using ` .dfu`, using pydfu
|
9
19
|
|
20
|
+
Not yet implemented: `nrf`, `cc3200`, `mimxrt`
|
21
|
+
|
10
22
|
## Features
|
11
23
|
1. List the connected boards including their firmware details, in a tabular or json format
|
12
24
|
2. Download MicroPython firmware for versions, and matching a specified board or matches your current attached board.
|
@@ -34,8 +46,7 @@ On Windows this will not be an issue, but on Linux you can use udev rules to gi
|
|
34
46
|
## Detailed usage
|
35
47
|
You can list the connected boards using the following command:
|
36
48
|
```bash
|
37
|
-
|
38
|
-
D:\MyPython\micropython-stubber> mpflash list
|
49
|
+
$> mpflash list
|
39
50
|
Connected boards
|
40
51
|
┏━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━┓
|
41
52
|
┃ Serial ┃Family ┃Port ┃Board ┃CPU ┃Version ┃build ┃
|
@@ -0,0 +1,98 @@
|
|
1
|
+
import shutil
|
2
|
+
from pathlib import Path
|
3
|
+
from typing import Union
|
4
|
+
|
5
|
+
import jsonlines
|
6
|
+
import requests
|
7
|
+
from loguru import logger as log
|
8
|
+
|
9
|
+
# re-use logic from mpremote
|
10
|
+
from mpremote.mip import _rewrite_url as rewrite_url # type: ignore
|
11
|
+
|
12
|
+
from mpflash.common import FWInfo
|
13
|
+
from mpflash.config import config
|
14
|
+
from mpflash.vendor.versions import get_preview_mp_version, get_stable_mp_version
|
15
|
+
|
16
|
+
|
17
|
+
def add_firmware(
|
18
|
+
source: Union[Path, str],
|
19
|
+
new_fw: FWInfo,
|
20
|
+
*,
|
21
|
+
force: bool = False,
|
22
|
+
custom: bool = False,
|
23
|
+
description: str = "",
|
24
|
+
) -> bool:
|
25
|
+
"""Add a firmware to the firmware folder.
|
26
|
+
|
27
|
+
stored in the port folder, with the same filename as the source.
|
28
|
+
|
29
|
+
"""
|
30
|
+
# Check minimal info needed
|
31
|
+
if not new_fw.port or not new_fw.board:
|
32
|
+
log.error("Port and board are required")
|
33
|
+
return False
|
34
|
+
if not isinstance(source, Path) and not source.startswith("http"):
|
35
|
+
log.error(f"Invalid source {source}")
|
36
|
+
return False
|
37
|
+
|
38
|
+
# use sensible defaults
|
39
|
+
source_2 = Path(source)
|
40
|
+
new_fw.ext = new_fw.ext or source_2.suffix
|
41
|
+
new_fw.variant = new_fw.variant or new_fw.board
|
42
|
+
new_fw.custom = new_fw.custom or custom
|
43
|
+
new_fw.description = new_fw.description or description
|
44
|
+
if not new_fw.version:
|
45
|
+
# TODO: Get version from filename
|
46
|
+
# or use the last preview version
|
47
|
+
new_fw.version = get_preview_mp_version() if new_fw.preview else get_stable_mp_version()
|
48
|
+
|
49
|
+
config.firmware_folder.mkdir(exist_ok=True)
|
50
|
+
|
51
|
+
fw_filename = config.firmware_folder / new_fw.port / source_2.name
|
52
|
+
|
53
|
+
new_fw.filename = str(fw_filename.relative_to(config.firmware_folder))
|
54
|
+
new_fw.firmware = source.as_uri() if isinstance(source, Path) else source
|
55
|
+
|
56
|
+
if not copy_firmware(source, fw_filename, force):
|
57
|
+
log.error(f"Failed to copy {source} to {fw_filename}")
|
58
|
+
return False
|
59
|
+
# add to inventory
|
60
|
+
with jsonlines.open(config.firmware_folder / "firmware.jsonl", "a") as writer:
|
61
|
+
log.info(f"Adding {new_fw.port} {new_fw.board}")
|
62
|
+
log.info(f" to {fw_filename}")
|
63
|
+
|
64
|
+
writer.write(new_fw.to_dict())
|
65
|
+
return True
|
66
|
+
|
67
|
+
|
68
|
+
def copy_firmware(source: Union[Path, str], fw_filename: Path, force: bool = False):
|
69
|
+
"""Add a firmware to the firmware folder.
|
70
|
+
stored in the port folder, with the same filename as the source.
|
71
|
+
"""
|
72
|
+
if fw_filename.exists() and not force:
|
73
|
+
log.error(f" {fw_filename} already exists. Use --force to overwrite")
|
74
|
+
return False
|
75
|
+
fw_filename.parent.mkdir(exist_ok=True)
|
76
|
+
if isinstance(source, Path):
|
77
|
+
if not source.exists():
|
78
|
+
log.error(f"File {source} does not exist")
|
79
|
+
return False
|
80
|
+
# file copy
|
81
|
+
log.debug(f"Copy {source} to {fw_filename}")
|
82
|
+
shutil.copy(source, fw_filename)
|
83
|
+
return True
|
84
|
+
# handle github urls
|
85
|
+
url = rewrite_url(source)
|
86
|
+
if str(source).startswith("http://") or str(source).startswith("https://"):
|
87
|
+
log.debug(f"Download {url} to {fw_filename}")
|
88
|
+
response = requests.get(url)
|
89
|
+
|
90
|
+
if response.status_code == 200:
|
91
|
+
with open(fw_filename, "wb") as file:
|
92
|
+
file.write(response.content)
|
93
|
+
log.info("File downloaded and saved successfully.")
|
94
|
+
return True
|
95
|
+
else:
|
96
|
+
print("Failed to download the file.")
|
97
|
+
return False
|
98
|
+
return False
|