mpflash 1.24.7__py3-none-any.whl → 1.25.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.
- mpflash/ask_input.py +7 -7
- mpflash/basicgit.py +26 -59
- mpflash/bootloader/__init__.py +0 -2
- mpflash/bootloader/detect.py +1 -2
- mpflash/bootloader/manual.py +0 -1
- mpflash/bootloader/touch1200.py +2 -2
- mpflash/cli_flash.py +28 -5
- mpflash/cli_group.py +1 -0
- mpflash/cli_list.py +7 -8
- mpflash/cli_main.py +2 -2
- mpflash/common.py +6 -14
- mpflash/config.py +30 -6
- mpflash/connected.py +6 -14
- mpflash/db/boards.py +63 -0
- mpflash/db/downloads.py +87 -0
- mpflash/download/__init__.py +221 -0
- mpflash/download/from_web.py +204 -0
- mpflash/downloaded.py +9 -34
- mpflash/flash/__init__.py +33 -18
- mpflash/flash/esp.py +39 -8
- mpflash/flash/uf2/linux.py +4 -9
- mpflash/flash/uf2/macos.py +1 -1
- mpflash/flash/uf2/windows.py +1 -1
- mpflash/flash/worklist.py +10 -5
- mpflash/list.py +17 -6
- mpflash/logger.py +1 -3
- mpflash/mpboard_id/__init__.py +6 -87
- mpflash/mpboard_id/add_boards.py +3 -8
- mpflash/mpboard_id/board.py +5 -2
- mpflash/mpboard_id/board_id.py +67 -7
- mpflash/mpboard_id/board_info.json +30974 -0
- mpflash/mpboard_id/board_info.zip +0 -0
- mpflash/mpboard_id/known.py +108 -0
- mpflash/mpboard_id/store.py +2 -3
- mpflash/mpremoteboard/__init__.py +85 -17
- mpflash/mpremoteboard/mpy_fw_info.py +23 -22
- mpflash/py.typed +0 -0
- mpflash/vendor/board_database.py +86 -1
- mpflash/vendor/click_aliases.py +64 -0
- mpflash/vendor/dfu.py +2 -8
- mpflash/vendor/pydfu.py +3 -14
- mpflash/versions.py +16 -6
- {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/METADATA +71 -13
- mpflash-1.25.0.dist-info/RECORD +62 -0
- {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/WHEEL +1 -1
- mpflash/download.py +0 -364
- mpflash-1.24.7.dist-info/RECORD +0 -56
- {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/LICENSE +0 -0
- {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/entry_points.txt +0 -0
mpflash/vendor/dfu.py
CHANGED
@@ -46,10 +46,7 @@ def parse(file, dump_images=False):
|
|
46
46
|
tprefix["name"] = cstring(tprefix["name"])
|
47
47
|
else:
|
48
48
|
tprefix["name"] = ""
|
49
|
-
print(
|
50
|
-
'%(signature)s %(num)d, alt setting: %(altsetting)s, name: "%(name)s", size: %(size)d, elements: %(elements)d'
|
51
|
-
% tprefix
|
52
|
-
)
|
49
|
+
print('%(signature)s %(num)d, alt setting: %(altsetting)s, name: "%(name)s", size: %(size)d, elements: %(elements)d' % tprefix)
|
53
50
|
tsize = tprefix["size"]
|
54
51
|
target, data = data[:tsize], data[tsize:]
|
55
52
|
for e in range(tprefix["elements"]):
|
@@ -65,10 +62,7 @@ def parse(file, dump_images=False):
|
|
65
62
|
if len(target):
|
66
63
|
print("target %d: PARSE ERROR" % t)
|
67
64
|
suffix = named(struct.unpack("<4H3sBI", data[:16]), "device product vendor dfu ufd len crc")
|
68
|
-
print(
|
69
|
-
"usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x"
|
70
|
-
% suffix
|
71
|
-
)
|
65
|
+
print("usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x" % suffix)
|
72
66
|
if crc != suffix["crc"]:
|
73
67
|
print("CRC ERROR: computed crc32 is 0x%08x" % crc)
|
74
68
|
data = data[16:]
|
mpflash/vendor/pydfu.py
CHANGED
@@ -395,10 +395,7 @@ def read_dfu_file(filename):
|
|
395
395
|
# B uint8_t len 16
|
396
396
|
# I uint32_t crc32 Checksum
|
397
397
|
dfu_suffix = named(struct.unpack("<4H3sBI", data[:16]), "device product vendor dfu ufd len crc")
|
398
|
-
print(
|
399
|
-
" usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, "
|
400
|
-
"dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x" % dfu_suffix
|
401
|
-
)
|
398
|
+
print(" usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, " "dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x" % dfu_suffix)
|
402
399
|
if crc != dfu_suffix["crc"]:
|
403
400
|
print("CRC ERROR: computed crc32 is 0x%08x" % crc)
|
404
401
|
return
|
@@ -477,19 +474,11 @@ def list_dfu_devices(*args, **kwargs):
|
|
477
474
|
if not devices:
|
478
475
|
raise SystemExit("No DFU capable devices found")
|
479
476
|
for device in devices:
|
480
|
-
print(
|
481
|
-
"Bus {} Device {:03d}: ID {:04x}:{:04x}".format(
|
482
|
-
device.bus, device.address, device.idVendor, device.idProduct
|
483
|
-
)
|
484
|
-
)
|
477
|
+
print("Bus {} Device {:03d}: ID {:04x}:{:04x}".format(device.bus, device.address, device.idVendor, device.idProduct))
|
485
478
|
layout = get_memory_layout(device)
|
486
479
|
print("Memory Layout")
|
487
480
|
for entry in layout:
|
488
|
-
print(
|
489
|
-
" 0x{:x} {:2d} pages of {:3d}K bytes".format(
|
490
|
-
entry["addr"], entry["num_pages"], entry["page_size"] // 1024
|
491
|
-
)
|
492
|
-
)
|
481
|
+
print(" 0x{:x} {:2d} pages of {:3d}K bytes".format(entry["addr"], entry["num_pages"], entry["page_size"] // 1024))
|
493
482
|
|
494
483
|
|
495
484
|
def write_elements(elements, mass_erase_used, progress=None):
|
mpflash/versions.py
CHANGED
@@ -6,10 +6,8 @@ from pathlib import Path
|
|
6
6
|
|
7
7
|
from cache_to_disk import NoCacheCondition, cache_to_disk
|
8
8
|
from loguru import logger as log
|
9
|
-
from packaging.version import Version, parse
|
10
9
|
|
11
|
-
|
12
|
-
from mpflash.common import GH_CLIENT
|
10
|
+
from mpflash.config import config
|
13
11
|
|
14
12
|
OLDEST_VERSION = "1.16"
|
15
13
|
"This is the oldest MicroPython version to build the stubs on"
|
@@ -40,6 +38,13 @@ def clean_version(
|
|
40
38
|
return "stable"
|
41
39
|
version = _v
|
42
40
|
log.trace(f"Using latest stable version: {version}")
|
41
|
+
elif version.lower() in ["preview", "latest"]:
|
42
|
+
_v = get_preview_mp_version()
|
43
|
+
if not _v:
|
44
|
+
log.warning("Could not determine the preview version")
|
45
|
+
return "preview"
|
46
|
+
version = _v
|
47
|
+
log.trace(f"Using latest preview version: {version}")
|
43
48
|
is_preview = "-preview" in version
|
44
49
|
nibbles = version.split("-")
|
45
50
|
ver_ = nibbles[0].lower().lstrip("v")
|
@@ -71,15 +76,18 @@ def clean_version(
|
|
71
76
|
|
72
77
|
def is_version(version: str):
|
73
78
|
"""Check if the version is a valid version string"""
|
79
|
+
# Just in time import
|
80
|
+
from packaging.version import Version
|
74
81
|
return Version._regex.search(version) is not None
|
75
82
|
|
76
83
|
|
77
84
|
@cache_to_disk(n_days_to_cache=1)
|
78
85
|
def micropython_versions(minver: str = "v1.20", reverse: bool = False, cache_it=True):
|
79
86
|
"""Get the list of micropython versions from github tags"""
|
80
|
-
|
87
|
+
# Just in time import
|
88
|
+
from packaging.version import parse
|
81
89
|
try:
|
82
|
-
gh_client =
|
90
|
+
gh_client = config.gh_client
|
83
91
|
repo = gh_client.get_repo("micropython/micropython")
|
84
92
|
tags = [tag.name for tag in repo.get_tags() if parse(tag.name) >= parse(minver)]
|
85
93
|
versions = [v for v in tags if not v.endswith(V_PREVIEW)]
|
@@ -90,7 +98,7 @@ def micropython_versions(minver: str = "v1.20", reverse: bool = False, cache_it=
|
|
90
98
|
log.error(e)
|
91
99
|
versions = []
|
92
100
|
# returns - but does not cache
|
93
|
-
raise NoCacheCondition(function_value=versions)
|
101
|
+
raise NoCacheCondition(function_value=versions) from e
|
94
102
|
# remove any duplicates and sort
|
95
103
|
versions = sorted(list(set(versions)), reverse=reverse, key=lambda s: (not is_version(s), s))
|
96
104
|
if cache_it:
|
@@ -116,6 +124,8 @@ def get_preview_mp_version(cache_it=True) -> str:
|
|
116
124
|
# Do not cache , same path will have different versions checked out
|
117
125
|
def checkedout_version(path: Path, flat: bool = False) -> str:
|
118
126
|
"""Get the checked-out version of the repo"""
|
127
|
+
# Just in time import
|
128
|
+
import mpflash.basicgit as git
|
119
129
|
version = git.get_local_tag(path.as_posix())
|
120
130
|
if not version:
|
121
131
|
raise ValueError("No valid Tag found")
|
@@ -1,17 +1,15 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: mpflash
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.25.0
|
4
4
|
Summary: Flash and download tool for MicroPython firmwares
|
5
5
|
License: MIT
|
6
6
|
Keywords: MicroPython,firmware,flash,download,UF2,esptool
|
7
7
|
Author: Jos Verlinde
|
8
8
|
Author-email: jos_verlinde@hotmail.com
|
9
|
-
Requires-Python: >=3.9
|
9
|
+
Requires-Python: >=3.9, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*, !=3.8.*
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
12
|
-
Classifier: Programming Language :: Python :: 3.9
|
13
12
|
Classifier: Programming Language :: Python :: 3.10
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
15
13
|
Classifier: Programming Language :: Python :: 3.12
|
16
14
|
Classifier: Programming Language :: Python :: 3.13
|
17
15
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
@@ -32,14 +30,15 @@ Requires-Dist: mpremote (>=1.22.0,<2.0.0)
|
|
32
30
|
Requires-Dist: packaging (>=24.2,<25.0)
|
33
31
|
Requires-Dist: platformdirs (>=4.2.0,<5.0.0)
|
34
32
|
Requires-Dist: poetry (>=2.0.1,<3.0.0)
|
35
|
-
Requires-Dist: psutil (>=5.9.8,<
|
33
|
+
Requires-Dist: psutil (>=5.9.8,<8.0.0)
|
36
34
|
Requires-Dist: pygithub (>=2.1.1,<3.0.0)
|
37
35
|
Requires-Dist: pyusb (>=1.2.1,<2.0.0)
|
36
|
+
Requires-Dist: pywin32 (>=310,<311) ; sys_platform == "win32"
|
38
37
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
39
38
|
Requires-Dist: rich-click (>=1.8.1,<2.0.0)
|
40
|
-
Requires-Dist: tenacity (==
|
41
|
-
Project-URL: Homepage, https://github.com/Josverl/
|
42
|
-
Project-URL: Repository, https://github.com/Josverl/
|
39
|
+
Requires-Dist: tenacity (==9.0.0)
|
40
|
+
Project-URL: Homepage, https://github.com/Josverl/mpflash/blob/main/README.md
|
41
|
+
Project-URL: Repository, https://github.com/Josverl/mpflash
|
43
42
|
Description-Content-Type: text/markdown
|
44
43
|
|
45
44
|
# MPFLASH
|
@@ -48,7 +47,7 @@ Description-Content-Type: text/markdown
|
|
48
47
|
[](https://pepy.tech/project/mpflash)
|
49
48
|
|
50
49
|
|
51
|
-
`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 .
|
50
|
+
`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 attached microcontrollers.
|
52
51
|
|
53
52
|
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.
|
54
53
|
|
@@ -69,7 +68,10 @@ Not yet implemented: `nrf`, `cc3200`, `mimxrt`, `renesas`
|
|
69
68
|
3. Flash one or all connected MicroPython boards with a specific firmware or version.
|
70
69
|
|
71
70
|
## Installation
|
72
|
-
To install mpflash, you can use
|
71
|
+
To install mpflash, you can use either of the following commands:
|
72
|
+
- `uv tool install mpflash`
|
73
|
+
- `pipx install mpflash`
|
74
|
+
- `pip install mpflash`
|
73
75
|
|
74
76
|
## Basic usage
|
75
77
|
You can use mpflash to perform various operations on your MicroPython boards. Here is an example of basic usage:
|
@@ -102,6 +104,7 @@ description = "Blue Norwegian actuator"
|
|
102
104
|
|
103
105
|
If you want the board to be ignored by mpflash, you can add the following to the board_info.toml file:
|
104
106
|
```toml
|
107
|
+
description = "Blue Norwegian feeder"
|
105
108
|
[mpflash]
|
106
109
|
ignore = true
|
107
110
|
```
|
@@ -110,8 +113,13 @@ ignore = true
|
|
110
113
|
## Linux permissions to access usb devices
|
111
114
|
In order to flash the firmware to the board, you need to have the correct permissions to access the USB devices.
|
112
115
|
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.
|
113
|
-
[See the stm32_permissions documentation](
|
116
|
+
[See the stm32_permissions documentation](docs/stm32_udev_rules.md) for more information.
|
114
117
|
|
118
|
+
## Use MPFlash in your own project
|
119
|
+
|
120
|
+
MPFlash can be used as a library in your own project. mpflash is used in [micropython-stubber]() to download and flash the firmware to the connected boards.
|
121
|
+
|
122
|
+
The interface is not well documented other than the code itself, but you can use the following example to get started: - docs/mpflash_api_example.ipynb
|
115
123
|
|
116
124
|
## Detailed usage
|
117
125
|
You can list the connected boards using the following command:
|
@@ -257,9 +265,59 @@ Note that if no matching firmware can be found for a board, it will be skipped.
|
|
257
265
|
(For example, the PYBV11 and ESP32_GENERIC_S3 boards in the example above.)
|
258
266
|
|
259
267
|
## Issues and bug reports
|
260
|
-
|
261
|
-
Please report any issues or bugs in the [issue tracker](https://github.com/Josverl/micropython-stubber/issues) using the MPflash feedback template.
|
268
|
+
Please report any issues or bugs in the [issue tracker](https://github.com/Josverl/mpflash/issues).
|
262
269
|
|
263
270
|
## License
|
264
271
|
mpflash is licensed under the MIT license. See the LICENSE file for more details.
|
265
272
|
|
273
|
+
# Contributions
|
274
|
+
<!-- spell-checker: disable -->
|
275
|
+
<!--
|
276
|
+
To add via the cli run the following command:
|
277
|
+
npx all-contributors-cli add user things
|
278
|
+
|
279
|
+
- bug
|
280
|
+
- tool
|
281
|
+
- stubs
|
282
|
+
- test
|
283
|
+
- doc
|
284
|
+
- code
|
285
|
+
- research
|
286
|
+
- ideas
|
287
|
+
- content
|
288
|
+
- mpflash
|
289
|
+
-->
|
290
|
+
|
291
|
+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
292
|
+
<!-- prettier-ignore-start -->
|
293
|
+
<!-- markdownlint-disable -->
|
294
|
+
<table>
|
295
|
+
<tbody>
|
296
|
+
<tr>
|
297
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Josverl"><img src="https://avatars2.githubusercontent.com/u/981654?v=4?s=100" width="100px;" alt="Jos Verlinde"/><br /><sub><b>Jos Verlinde</b></sub></a><br /><a href="https://github.com/Josverl/mpflash/commits?author=josverl" title="Code">💻</a> <a href="#research-josverl" title="Research">🔬</a> <a href="#ideas-josverl" title="Ideas, Planning, & Feedback">🤔</a> <a href="#content-josverl" title="Content">🖋</a> <a href="#test-josverl" title="Test">✅</a> <a href="#mpflash-josverl" title="mpflash">💥</a></td>
|
298
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/shariltumin"><img src="https://avatars.githubusercontent.com/u/186120?v=4?s=100" width="100px;" alt="shariltumin"/><br /><sub><b>shariltumin</b></sub></a><br /><a href="#mpflash-shariltumin" title="mpflash">💥</a> <a href="#test-shariltumin" title="Test">✅</a></td>
|
299
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mattytrentini"><img src="https://avatars.githubusercontent.com/u/194201?v=4?s=100" width="100px;" alt="Matt Trentini"/><br /><sub><b>Matt Trentini</b></sub></a><br /><a href="#mpflash-mattytrentini" title="mpflash">💥</a> <a href="#test-mattytrentini" title="Test">✅</a></td>
|
300
|
+
<td align="center" valign="top" width="14.28%"><a href="http://scruss.com/blog/"><img src="https://avatars.githubusercontent.com/u/425706?v=4?s=100" width="100px;" alt="Stewart Russell"/><br /><sub><b>Stewart Russell</b></sub></a><br /><a href="#mpflash-scruss" title="mpflash">💥</a> <a href="#test-scruss" title="Test">✅</a></td>
|
301
|
+
<td align="center" valign="top" width="14.28%"><a href="https://www.gitlab.com/alelec"><img src="https://avatars.githubusercontent.com/u/3318786?v=4?s=100" width="100px;" alt="Andrew Leech"/><br /><sub><b>Andrew Leech</b></sub></a><br /><a href="#mpflash-andrewleech" title="mpflash">💥</a> <a href="#test-andrewleech" title="Test">✅</a></td>
|
302
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wovo"><img src="https://avatars.githubusercontent.com/u/9039468?v=4?s=100" width="100px;" alt="Wouter van Ooijen"/><br /><sub><b>Wouter van Ooijen</b></sub></a><br /><a href="#mpflash-wovo" title="mpflash">💥</a> <a href="#test-wovo" title="Test">✅</a></td>
|
303
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/shaneapowell"><img src="https://avatars.githubusercontent.com/u/12113620?v=4?s=100" width="100px;" alt="Shane Powell"/><br /><sub><b>Shane Powell</b></sub></a><br /><a href="#mpflash-shaneapowell" title="mpflash">💥</a> <a href="#test-shaneapowell" title="Test">✅</a></td>
|
304
|
+
</tr>
|
305
|
+
<tr>
|
306
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/robert-hh"><img src="https://avatars.githubusercontent.com/u/12476868?v=4?s=100" width="100px;" alt="Robert Hammelrath"/><br /><sub><b>Robert Hammelrath</b></sub></a><br /><a href="#mpflash-robert-hh" title="mpflash">💥</a> <a href="#test-robert-hh" title="Test">✅</a></td>
|
307
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/beetlegigg"><img src="https://avatars.githubusercontent.com/u/34552737?v=4?s=100" width="100px;" alt="Bg"/><br /><sub><b>Bg</b></sub></a><br /><a href="#mpflash-beetlegigg" title="mpflash">💥</a> <a href="#test-beetlegigg" title="Test">✅</a></td>
|
308
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rkompass"><img src="https://avatars.githubusercontent.com/u/90282516?v=4?s=100" width="100px;" alt="Raul Kompaß"/><br /><sub><b>Raul Kompaß</b></sub></a><br /><a href="#mpflash-rkompass" title="mpflash">💥</a> <a href="#test-rkompass" title="Test">✅</a></td>
|
309
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/garryp4"><img src="https://avatars.githubusercontent.com/u/96994876?v=4?s=100" width="100px;" alt="garryp4"/><br /><sub><b>garryp4</b></sub></a><br /><a href="#mpflash-garryp4" title="mpflash">💥</a> <a href="#test-garryp4" title="Test">✅</a></td>
|
310
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/shanepowell-ast"><img src="https://avatars.githubusercontent.com/u/102747617?v=4?s=100" width="100px;" alt="Shane Powell"/><br /><sub><b>Shane Powell</b></sub></a><br /><a href="#mpflash-shanepowell-ast" title="mpflash">💥</a> <a href="#test-shanepowell-ast" title="Test">✅</a></td>
|
311
|
+
<td align="center" valign="top" width="14.28%"><a href="https://andypiper.org/"><img src="https://avatars.githubusercontent.com/u/552452?v=4?s=100" width="100px;" alt="Andy Piper"/><br /><sub><b>Andy Piper</b></sub></a><br /><a href="#mpflash-andypiper" title="mpflash">💥</a> <a href="#test-andypiper" title="Test">✅</a></td>
|
312
|
+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DavesCodeMusings"><img src="https://avatars.githubusercontent.com/u/61114342?v=4?s=100" width="100px;" alt="David Horton"/><br /><sub><b>David Horton</b></sub></a><br /><a href="#mpflash-DavesCodeMusings" title="mpflash">💥</a> <a href="#test-DavesCodeMusings" title="Test">✅</a></td>
|
313
|
+
</tr>
|
314
|
+
</tbody>
|
315
|
+
</table>
|
316
|
+
|
317
|
+
<!-- markdownlint-restore -->
|
318
|
+
<!-- prettier-ignore-end -->
|
319
|
+
|
320
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
321
|
+
|
322
|
+
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
323
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
mpflash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
mpflash/add_firmware.py,sha256=1h0HsA-EVi3HXLmoEvzwY_a-GuWYzPwulTYHHBB8THg,3428
|
3
|
+
mpflash/ask_input.py,sha256=piwMuW7QlYsIvDdJFN1lVCkCGsmsSyyMaUOtvf_S330,8885
|
4
|
+
mpflash/basicgit.py,sha256=e5utBpTObVl5fbSZ-dpiZuVi0touiFppS8NuKRKcxII,9670
|
5
|
+
mpflash/bootloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
mpflash/bootloader/activate.py,sha256=orQOw4XTkXVZI-rMInRb0T5Wp3qA_BlzbJUA2gyBToU,2361
|
7
|
+
mpflash/bootloader/detect.py,sha256=OagP2QVWeLLWkZt2paqEF6r4_x3QDcBGNCPOWfMy9NQ,2686
|
8
|
+
mpflash/bootloader/manual.py,sha256=C3PVLW3lwz66zG2mOekAJdwXD8PZcIyI3VuLEkusMpI,3168
|
9
|
+
mpflash/bootloader/micropython.py,sha256=v_kZkvg0uWZDbMrT78gmiYHbD83QLdnrctvEClI8iRg,529
|
10
|
+
mpflash/bootloader/touch1200.py,sha256=VND7_YniS9Vx6WEaAxjI72RZZ6WBOwmBTsKJkbuaAHk,1105
|
11
|
+
mpflash/cli_download.py,sha256=6p83u0Iqyq-V6zS_zQbngSgnCnE0thNPR02r_12_d_Y,3660
|
12
|
+
mpflash/cli_flash.py,sha256=6ZOHChF1cUyQEDzUpgJKko8EX__55Ol-fQkZNfTJpB8,8337
|
13
|
+
mpflash/cli_group.py,sha256=_Wj4EvRkmPri6wyJWT8cQ0WRMwrj9xtCDLaxFJs7ssM,2617
|
14
|
+
mpflash/cli_list.py,sha256=U4lrlE7O6o1BamHD0K_cJhuINanKNgXkg-WTU5RetF4,2354
|
15
|
+
mpflash/cli_main.py,sha256=aVlsA-ZHBKJyuGwSCbpO2Ky0X52wPeOOGumvuPPTFzQ,1136
|
16
|
+
mpflash/common.py,sha256=1mEsilJd3HpL7wFPsJ0EScYoJj7JqGFWDjSFEKJdjeU,7488
|
17
|
+
mpflash/config.py,sha256=GMuqhrof3lkG7x_CxitYRkm4mxHEYZ_uPFNO3QxSJCY,2166
|
18
|
+
mpflash/connected.py,sha256=oxZdk1o-AfNPhJsSxr3KrMH_gdYfrjqc_IpT6J8Ng9k,3496
|
19
|
+
mpflash/db/boards.py,sha256=KvpJ45oPwoxuXCzNpAPIyMOiXOpO72LBJowQ4QBJPiU,1960
|
20
|
+
mpflash/db/downloads.py,sha256=sHJzKLf5cYFftIcweoBfCqMY0MPJMmFYVRT7mprspvU,2975
|
21
|
+
mpflash/download/__init__.py,sha256=kI9zYSjFUO2vVbRofJmQw44ftlM5r1HnjmkdZenzo2c,8451
|
22
|
+
mpflash/download/from_web.py,sha256=ddUd7MZJj19e_nR9Iw79v3UuCPwvkWwQtuBEyu-XsbY,7860
|
23
|
+
mpflash/downloaded.py,sha256=kfUt07vDARZYw64TToXLxA-UlP7zFTGRjnBzIEDL5cU,4163
|
24
|
+
mpflash/errors.py,sha256=IAidY3qkZsXy6Pm1rdmVFmGyg81ywHhse3itaPctA2w,247
|
25
|
+
mpflash/flash/__init__.py,sha256=V--YRwDGtCCLVfCe9p9SGV1Cbi0FNd9zenKlIb-HFw0,2820
|
26
|
+
mpflash/flash/esp.py,sha256=N71fPMYhYexEF3YeJGJ74B3GtceXa-FdGqiBpa2qboI,3225
|
27
|
+
mpflash/flash/stm32.py,sha256=dqp9BZ4Vr-6GlQcF12TSmRf-5TXkov9qvCpMgeUJc7Y,574
|
28
|
+
mpflash/flash/stm32_dfu.py,sha256=W-3JsRQyf3DduoIRXDmGZ35RogqtjQgcJnk-GOtQoLE,3090
|
29
|
+
mpflash/flash/uf2/__init__.py,sha256=haL84hP2p1ZjKF6dXJJHAB_NTf7jT91MuZvmvg9SpIA,3617
|
30
|
+
mpflash/flash/uf2/boardid.py,sha256=U5wGM8VA3wEpUxQCMtuXpMZZomdVH8J_Zd5_GekUMuU,423
|
31
|
+
mpflash/flash/uf2/linux.py,sha256=uTgqyS7C7xfQ25RrTcSUkt-m2u2Ks_o7bPLzIecPoC8,4355
|
32
|
+
mpflash/flash/uf2/macos.py,sha256=JTaIpqnR_0k4oSEvzs9amhmK-PMxUJyZLnZ_wZwxa-0,1228
|
33
|
+
mpflash/flash/uf2/uf2disk.py,sha256=4_P2l-kedM7VSliA2u706LQLxvu3xWSod1-lj-xjZis,298
|
34
|
+
mpflash/flash/uf2/windows.py,sha256=S---sVjVrC00ZcnpOewtJIBfSCj2cr7FGQwEm_ZEDnY,1334
|
35
|
+
mpflash/flash/worklist.py,sha256=eOD7BigUEshwcc5p7SaSeegpSpIOX1zE_6HuOzssrqM,6083
|
36
|
+
mpflash/list.py,sha256=AjsVTWWTcfUhoT2lYJf2KvcOgMen9MgXY6fDYJvd0Mc,4014
|
37
|
+
mpflash/logger.py,sha256=D6S-KDhXTLl7bYMKfu71iVO1YlpGSd0BcHvkVFOCW5c,1080
|
38
|
+
mpflash/mpboard_id/__init__.py,sha256=i-HxDi4UPvQu2zFhWK5HENr_HmTdsnaqkLfNyxjOelg,515
|
39
|
+
mpflash/mpboard_id/add_boards.py,sha256=XCSyZC9v-B5gzW4dIWdqQVIiE8JviKx0GpyGEQ64dm8,9949
|
40
|
+
mpflash/mpboard_id/board.py,sha256=hzP_SNyigjRQsP3FmTCvuCDtPPalfkL5IfjrnATlVS0,1367
|
41
|
+
mpflash/mpboard_id/board_id.py,sha256=mJqVW_D8uHnuON7xpKBRRs2e3ExQGNYC2bSA2ItZBKY,5439
|
42
|
+
mpflash/mpboard_id/board_info.json,sha256=A3ZIt38KvAy2NMB5srHorSBd3Q3wOZIXufWiIs3XLrs,1019745
|
43
|
+
mpflash/mpboard_id/board_info.zip,sha256=-2bnQGRsIQuJUfz-7_-GQ8pMWJ1evhCez6yfjhXocNw,23213
|
44
|
+
mpflash/mpboard_id/known.py,sha256=pYw2z5w_PZC9BG6uqo4jFIoSpiacRxL9oj7pHKv-qjo,4521
|
45
|
+
mpflash/mpboard_id/store.py,sha256=UR5nWwywqSPY_2DBP2w8td3b7N6iS-B5rMcyh-s2JOQ,1750
|
46
|
+
mpflash/mpremoteboard/__init__.py,sha256=jj4FVK237BmQ1-N4ANePWEJFY7yyhbb0XvJx8n00vuc,11993
|
47
|
+
mpflash/mpremoteboard/mpy_fw_info.py,sha256=xhEjifU7pAUpey5T23k6x_1bhuS2XcVbSM21ZynWDdM,5148
|
48
|
+
mpflash/mpremoteboard/runner.py,sha256=-PgzAeBGbyXaAUlwyiw4mcINsP2U1XRRjP1_QdBrxpg,4786
|
49
|
+
mpflash/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
+
mpflash/vendor/board_database.py,sha256=Cb8fEhJaZ2siMkLPW5rPwV9yzBsTtKGOqWUd9TxNgFM,8763
|
51
|
+
mpflash/vendor/click_aliases.py,sha256=adLhqLxNpJEPjSCIRSTkR-QzSgavGFKT0cwRbjxpzRU,5395
|
52
|
+
mpflash/vendor/dfu.py,sha256=6rqGCBS8mTxxaLtkdzJ8O6nc74kFk8jrkmKvxw-x-u8,5693
|
53
|
+
mpflash/vendor/pico-universal-flash-nuke/LICENSE.txt,sha256=Zkc2iTNbib2NCMwtLjMEz0vFCPglgvaw6Mj7QiWldpQ,1484
|
54
|
+
mpflash/vendor/pico-universal-flash-nuke/universal_flash_nuke.uf2,sha256=QuPMppqHMVOt3vDVU0bikHRLsTiDRQYNUcGQ_OLRFGI,28160
|
55
|
+
mpflash/vendor/pydfu.py,sha256=uD0esm1iPHap7T93M_fli1LlXwn8RxKDFRnt8inxJu8,20389
|
56
|
+
mpflash/vendor/readme.md,sha256=BQ7Uxf8joeYMjTUuSLLBG49ob6a9MgFPIEwuc72-Mfw,415
|
57
|
+
mpflash/versions.py,sha256=zDAUEMae0hvB8CFmVnf_VWtnVIpAiMGXKpvk2FgnWcg,4878
|
58
|
+
mpflash-1.25.0.dist-info/entry_points.txt,sha256=Jk_visOhYOsZIcSP2Ms9hKqfKy1iorR-6dYltSoWCpY,52
|
59
|
+
mpflash-1.25.0.dist-info/LICENSE,sha256=mWpNhsIxWzetYNnTpr4eb3HtgsxGIC8KcYWxXEcxQvE,1077
|
60
|
+
mpflash-1.25.0.dist-info/METADATA,sha256=lBovhakb7WQMmZ7n6KGv6bnUIYq_rVmZ_9rU1ZAwgJU,23930
|
61
|
+
mpflash-1.25.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
62
|
+
mpflash-1.25.0.dist-info/RECORD,,
|