Repository navigation
Nanodesu! 1.0.1
Nanodesu! 1.0.1
A maintenance release: the tool now ships with a test suite and continuous
integration, plus two robustness fixes.
Added
-
Test suite — 16 tests covering archive parsing, the
extract→build
round trip,--pycheader handling, contents-directory placement, PYZ
extraction and the error paths. Synthetic archives keep the whole suite under
a second, so no sample executable is needed:python -m unittest discover -s test -vDedicated regression tests cover the three format details that silently
produce a broken repack: lowercasezmarking a PYZ archive, PYZ item type
0being an ordinary module, and headers prepended by--pycbeing stripped
again on repack. -
Continuous integration —
.github/workflows/tests.ymlruns the suite on
Linux and Windows across Python 3.9, 3.12, 3.13 and 3.14, byte-compiles both
modules, self-tests the character canvas and smoke-tests the CLI.
Fixed
- PYZ extraction could overwrite a module. When a module and a package
claimed the same file path inside a PYZ archive (for exampleutilsand
utils.sub), the second one silently replaced the first. The extractor now
detects the collision, writes the later module under a flattened name, and
reports what it did. - Cleaner failures. A missing path or a directory passed where an archive
was expected now prints a one-line message and exits with status 1, instead
of showing a Python traceback.
Verified
- 16/16 tests pass on Python 3.9, 3.12, 3.13 and 3.14.
- Self-check on a 138.8 MB onefile build: 836 entries extracted, all verified,
and unpack → repack → unpack still reproduces every file byte for byte. - The tool extracts and repacks itself:
nanodesu.exe(62 entries) unpacks,
repacks, passes verification, and the repacked binary still runs.
Install
No dependencies beyond Python 3.9+.
pip install . # provides the `nanodesu` command
python nanodesu.py --help # or run it directlyThe attached nanodesu.exe is a standalone 64-bit Windows build for
convenience.