idftool 0.3.0__tar.gz → 0.5.0__tar.gz

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 (55) hide show
  1. {idftool-0.3.0 → idftool-0.5.0}/CHANGELOG.md +24 -0
  2. idftool-0.5.0/Makefile +62 -0
  3. {idftool-0.3.0 → idftool-0.5.0}/PKG-INFO +5 -1
  4. idftool-0.5.0/idftool/__main__.py +1328 -0
  5. {idftool-0.3.0 → idftool-0.5.0}/idftool.egg-info/PKG-INFO +5 -1
  6. idftool-0.5.0/idftool.egg-info/SOURCES.txt +48 -0
  7. {idftool-0.3.0 → idftool-0.5.0}/idftool.egg-info/requires.txt +5 -0
  8. idftool-0.5.0/idftool.egg-info/scm_file_list.json +44 -0
  9. idftool-0.5.0/idftool.egg-info/scm_version.json +8 -0
  10. {idftool-0.3.0 → idftool-0.5.0}/pyproject.toml +12 -0
  11. idftool-0.5.0/test/README.md +43 -0
  12. idftool-0.5.0/test/conftest.py +103 -0
  13. idftool-0.5.0/test/fixtures/README.md +12 -0
  14. idftool-0.5.0/test/fixtures/esp32s3/app-v1.bin +0 -0
  15. idftool-0.5.0/test/fixtures/esp32s3/app-v2.bin +0 -0
  16. idftool-0.5.0/test/fixtures/esp32s3/bootloader.bin +0 -0
  17. idftool-0.5.0/test/fixtures/esp32s3/flash-image.bin +0 -0
  18. idftool-0.5.0/test/fixtures/esp32s3/nvs.csv +6 -0
  19. idftool-0.5.0/test/fixtures/esp32s3/partition-table.bin +0 -0
  20. idftool-0.5.0/test/fixtures/esp32s3/partitions.csv +11 -0
  21. idftool-0.5.0/test/project/.gitignore +5 -0
  22. idftool-0.5.0/test/project/CMakeLists.txt +12 -0
  23. idftool-0.5.0/test/project/README.md +35 -0
  24. idftool-0.5.0/test/project/build_fixtures.sh +50 -0
  25. idftool-0.5.0/test/project/main/CMakeLists.txt +1 -0
  26. idftool-0.5.0/test/project/main/idf_component.yml +5 -0
  27. idftool-0.5.0/test/project/main/main.c +13 -0
  28. idftool-0.5.0/test/project/nvs.csv +6 -0
  29. idftool-0.5.0/test/project/partitions.csv +11 -0
  30. idftool-0.5.0/test/project/sdkconfig.defaults +4 -0
  31. idftool-0.5.0/test/samples/bootloader-template.csv +7 -0
  32. idftool-0.5.0/test/samples/nvs.csv +5 -0
  33. idftool-0.5.0/test/samples/partitions.csv +9 -0
  34. idftool-0.5.0/test/test_device.py +143 -0
  35. idftool-0.5.0/test/test_offline.py +100 -0
  36. idftool-0.3.0/Makefile +0 -39
  37. idftool-0.3.0/idftool/__main__.py +0 -1394
  38. idftool-0.3.0/idftool.egg-info/SOURCES.txt +0 -23
  39. idftool-0.3.0/idftool.egg-info/scm_file_list.json +0 -19
  40. idftool-0.3.0/idftool.egg-info/scm_version.json +0 -8
  41. {idftool-0.3.0 → idftool-0.5.0}/.github/workflows/build.yml +0 -0
  42. {idftool-0.3.0 → idftool-0.5.0}/.github/workflows/publish.yml +0 -0
  43. {idftool-0.3.0 → idftool-0.5.0}/.gitignore +0 -0
  44. {idftool-0.3.0 → idftool-0.5.0}/CONTRIBUTING.md +0 -0
  45. {idftool-0.3.0 → idftool-0.5.0}/LICENSE.md +0 -0
  46. {idftool-0.3.0 → idftool-0.5.0}/README.md +0 -0
  47. {idftool-0.3.0 → idftool-0.5.0}/idftool/__init__.py +0 -0
  48. {idftool-0.3.0 → idftool-0.5.0}/idftool/traceback.py +0 -0
  49. {idftool-0.3.0 → idftool-0.5.0}/idftool-onedir.spec +0 -0
  50. {idftool-0.3.0 → idftool-0.5.0}/idftool.egg-info/dependency_links.txt +0 -0
  51. {idftool-0.3.0 → idftool-0.5.0}/idftool.egg-info/entry_points.txt +0 -0
  52. {idftool-0.3.0 → idftool-0.5.0}/idftool.egg-info/top_level.txt +0 -0
  53. {idftool-0.3.0 → idftool-0.5.0}/idftool.py +0 -0
  54. {idftool-0.3.0 → idftool-0.5.0}/idftool.spec +0 -0
  55. {idftool-0.3.0 → idftool-0.5.0}/setup.cfg +0 -0
@@ -4,6 +4,29 @@ All notable changes to this project are documented here. The format is
4
4
  based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
5
5
  this project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [v0.5.0] — 2026-07-17
8
+
9
+ ### Changed
10
+ - The CLI is rebuilt on [click](https://click.palletsprojects.com/) and
11
+ [rich-click](https://github.com/ewels/rich-click) (like esptool): `--help`,
12
+ usage, and errors now render in boxed panels, and commands are grouped into
13
+ labelled sections. Command names, arguments, options, aliases (`reflash`,
14
+ `list`), and behaviour are unchanged — only the help/usage and error
15
+ formatting differ.
16
+
17
+ ### Added
18
+ - `create-table` as an alias for `convert-table`.
19
+ - `create-nvs` and `write-nvs` now accept a pre-built NVS binary image as
20
+ input (auto-detected), not only a CSV — it is validated against the
21
+ partition size and padded to it, instead of failing when parsed as CSV.
22
+ - A test suite: an offline suite (no hardware) plus a real-device suite that
23
+ cycles every command against a connected ESP, with fixtures built from a
24
+ small ESP-IDF app (`make test-offline` / `make test-device`).
25
+
26
+ ### Fixed
27
+ - `write-bundle` now reports a clear error when a bundle entry is larger than
28
+ its target partition, instead of crashing with an `AttributeError`.
29
+
7
30
  ## [v0.3.0] — 2026-07-15
8
31
 
9
32
  ### Added
@@ -87,6 +110,7 @@ this project adheres to [Semantic Versioning](https://semver.org/).
87
110
  ### Added
88
111
  - Initial release.
89
112
 
113
+ [v0.5.0]: https://github.com/nebkat/idftool/releases/tag/v0.5.0
90
114
  [v0.3.0]: https://github.com/nebkat/idftool/releases/tag/v0.3.0
91
115
  [v0.2.2]: https://github.com/nebkat/idftool/releases/tag/v0.2.2
92
116
  [v0.2.1]: https://github.com/nebkat/idftool/releases/tag/v0.2.1
idftool-0.5.0/Makefile ADDED
@@ -0,0 +1,62 @@
1
+ .PHONY: build build-onefile test test-offline test-device test-device-full install install-onefile uninstall clean
2
+
3
+ VENV := .venv
4
+ PYINSTALLER := $(VENV)/bin/pyinstaller
5
+ PREFIX := $(HOME)/.local
6
+ BINDIR := $(PREFIX)/bin
7
+ SHAREDIR := $(PREFIX)/share/idftool
8
+
9
+ # Device test config: `make test-device PORT=/dev/cu.usbmodem101 CHIP=esp32s3`
10
+ PORT :=
11
+ CHIP := esp32s3
12
+
13
+ build: $(VENV)
14
+ $(PYINSTALLER) --noconfirm --distpath ./dist-onedir --workpath ./build-onedir idftool-onedir.spec
15
+
16
+ build-onefile: $(VENV)
17
+ $(PYINSTALLER) --noconfirm --distpath ./dist --workpath ./build idftool.spec
18
+
19
+ test: build
20
+ ./dist-onedir/idftool/idftool --help >/dev/null
21
+
22
+ # Offline test suite (no hardware).
23
+ test-offline: $(VENV)
24
+ $(VENV)/bin/pip install -q -e ".[test]"
25
+ $(VENV)/bin/pytest test/test_offline.py
26
+
27
+ # Real-device test suite (fast core: the quick per-command tests). Requires a connected board and
28
+ # built fixtures (test/project/build_fixtures.sh). WILL ERASE THE DEVICE'S FLASH.
29
+ test-device: $(VENV)
30
+ @test -n "$(PORT)" || { echo "Usage: make test-device PORT=/dev/... [CHIP=$(CHIP)]"; exit 2; }
31
+ $(VENV)/bin/pip install -q -e ".[test]"
32
+ $(VENV)/bin/pytest test/test_device.py --port $(PORT) --chip $(CHIP) -m "not slow"
33
+
34
+ # Full device suite, including the slow full-flash dump-image / bundle round-trips. These move
35
+ # megabytes and take many minutes (a full 16 MB dump-image is ~25 min on USB-Serial-JTAG boards).
36
+ test-device-full: $(VENV)
37
+ @test -n "$(PORT)" || { echo "Usage: make test-device-full PORT=/dev/... [CHIP=$(CHIP)]"; exit 2; }
38
+ $(VENV)/bin/pip install -q -e ".[test]"
39
+ $(VENV)/bin/pytest test/test_device.py --port $(PORT) --chip $(CHIP)
40
+
41
+ install: build
42
+ mkdir -p $(BINDIR)
43
+ rm -rf $(SHAREDIR)
44
+ mkdir -p $(dir $(SHAREDIR))
45
+ cp -R dist-onedir/idftool $(SHAREDIR)
46
+ ln -sf $(SHAREDIR)/idftool $(BINDIR)/idftool
47
+
48
+ install-onefile: build-onefile
49
+ mkdir -p $(BINDIR)
50
+ cp dist/idftool $(BINDIR)/idftool
51
+
52
+ uninstall:
53
+ rm -f $(BINDIR)/idftool
54
+ rm -rf $(SHAREDIR)
55
+
56
+ clean:
57
+ rm -rf build build-onedir dist dist-onedir $(VENV)
58
+
59
+ $(VENV):
60
+ python3 -m venv $(VENV)
61
+ $(VENV)/bin/pip install --upgrade pip
62
+ $(VENV)/bin/pip install -e . pyinstaller
@@ -1,15 +1,19 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: idftool
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Summary: Utility for flashing, provisioning, and interacting with Espressif SOCs running ESP-IDF
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Source, https://github.com/nebkat/idftool
7
7
  Requires-Python: >=3.10
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE.md
10
+ Requires-Dist: click>=8.1
11
+ Requires-Dist: rich-click>=1.8
10
12
  Requires-Dist: esptool~=5.2.0
11
13
  Requires-Dist: esp-idf-defs~=0.1.3
12
14
  Requires-Dist: esp-idf-nvs-partition-gen~=0.2.0
15
+ Provides-Extra: test
16
+ Requires-Dist: pytest>=8; extra == "test"
13
17
  Dynamic: license-file
14
18
 
15
19
  # idftool