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.
Files changed (49) hide show
  1. mpflash/ask_input.py +7 -7
  2. mpflash/basicgit.py +26 -59
  3. mpflash/bootloader/__init__.py +0 -2
  4. mpflash/bootloader/detect.py +1 -2
  5. mpflash/bootloader/manual.py +0 -1
  6. mpflash/bootloader/touch1200.py +2 -2
  7. mpflash/cli_flash.py +28 -5
  8. mpflash/cli_group.py +1 -0
  9. mpflash/cli_list.py +7 -8
  10. mpflash/cli_main.py +2 -2
  11. mpflash/common.py +6 -14
  12. mpflash/config.py +30 -6
  13. mpflash/connected.py +6 -14
  14. mpflash/db/boards.py +63 -0
  15. mpflash/db/downloads.py +87 -0
  16. mpflash/download/__init__.py +221 -0
  17. mpflash/download/from_web.py +204 -0
  18. mpflash/downloaded.py +9 -34
  19. mpflash/flash/__init__.py +33 -18
  20. mpflash/flash/esp.py +39 -8
  21. mpflash/flash/uf2/linux.py +4 -9
  22. mpflash/flash/uf2/macos.py +1 -1
  23. mpflash/flash/uf2/windows.py +1 -1
  24. mpflash/flash/worklist.py +10 -5
  25. mpflash/list.py +17 -6
  26. mpflash/logger.py +1 -3
  27. mpflash/mpboard_id/__init__.py +6 -87
  28. mpflash/mpboard_id/add_boards.py +3 -8
  29. mpflash/mpboard_id/board.py +5 -2
  30. mpflash/mpboard_id/board_id.py +67 -7
  31. mpflash/mpboard_id/board_info.json +30974 -0
  32. mpflash/mpboard_id/board_info.zip +0 -0
  33. mpflash/mpboard_id/known.py +108 -0
  34. mpflash/mpboard_id/store.py +2 -3
  35. mpflash/mpremoteboard/__init__.py +85 -17
  36. mpflash/mpremoteboard/mpy_fw_info.py +23 -22
  37. mpflash/py.typed +0 -0
  38. mpflash/vendor/board_database.py +86 -1
  39. mpflash/vendor/click_aliases.py +64 -0
  40. mpflash/vendor/dfu.py +2 -8
  41. mpflash/vendor/pydfu.py +3 -14
  42. mpflash/versions.py +16 -6
  43. {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/METADATA +71 -13
  44. mpflash-1.25.0.dist-info/RECORD +62 -0
  45. {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/WHEEL +1 -1
  46. mpflash/download.py +0 -364
  47. mpflash-1.24.7.dist-info/RECORD +0 -56
  48. {mpflash-1.24.7.dist-info → mpflash-1.25.0.dist-info}/LICENSE +0 -0
  49. {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
- import mpflash.basicgit as git
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 = 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.24.7
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,<4.0
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,<6.0.0)
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 (==8.2.3)
41
- Project-URL: Homepage, https://github.com/Josverl/micropython-stubber/blob/main/src/mpflash/README.md
42
- Project-URL: Repository, https://github.com/Josverl/micropython-stubber
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
  [![Downloads](https://static.pepy.tech/badge/mpflash)](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: `pipx install mpflash` or `pip install mpflash`
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](./stm32_udev_rules.md) for more information.
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
- mpflash is currently co-located in the [micropython-stubber](https://github.com/Josverl/micropython-stubber) repository.
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: poetry-core 2.1.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any