Development Considerations¶
Why Markdown?¶
To provide a flexible base for migrating your notes to the app of your choice.
Why enlighten and not tqdm for progress bars?¶
enlighten did integrate easier with pythons logging.
Sort all iterators with arbitrary order¶
Reproducibility is more important than memory usage and speed.
# good
for item in sorted(file_or_folder.iterdir()):
# bad
for item in file_or_folder.iterdir():
Why pyinstaller and not nuitka?¶
I did have a bit experience in setting up pyinstaller. The size of the final executable seems to be much smaller with pyinstaller, too.
Why is the executable so large?¶
Pandoc is included and is standalone ~144 MB large. This has the biggest impact on the size. The module sizes in particular can be analyzed by using the following code snippet in the pyinstaller spec file:
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='jimmy_cli',
)
The resulting files can be listed and ordered by size by:
> du -lh dist/jimmy_cli | sort -h
8,0K dist/jimmy_cli/_internal/setuptools/_vendor/jaraco/text
12K dist/jimmy_cli/_internal/setuptools/_vendor/jaraco
24K dist/jimmy_cli/_internal/cryptography-43.0.3.dist-info/license_files
24K dist/jimmy_cli/_internal/wheel-0.44.0.dist-info
40K dist/jimmy_cli/_internal/Markdown-3.7.dist-info
40K dist/jimmy_cli/_internal/setuptools/_vendor/importlib_metadata-8.0.0.dist-info
56K dist/jimmy_cli/_internal/setuptools/_vendor
60K dist/jimmy_cli/_internal/cryptography-43.0.3.dist-info
60K dist/jimmy_cli/_internal/markupsafe
60K dist/jimmy_cli/_internal/setuptools
108K dist/jimmy_cli/_internal/ossl-modules
164K dist/jimmy_cli/_internal/puremagic
288K dist/jimmy_cli/_internal/charset_normalizer
2,4M dist/jimmy_cli/_internal/yaml
11M dist/jimmy_cli/_internal/cryptography
11M dist/jimmy_cli/_internal/cryptography/hazmat
11M dist/jimmy_cli/_internal/cryptography/hazmat/bindings
15M dist/jimmy_cli/_internal/lib-dynload
144M dist/jimmy_cli/_internal/pypandoc
144M dist/jimmy_cli/_internal/pypandoc/files
213M dist/jimmy_cli/_internal
262M dist/jimmy_cli
Why cryptography and not pycryptodome?¶
They worked both at the first implementation. cryptography
made a slightly better impression, so it was chosen.