Dave McEwan's Personal Python Library
Project description
dmppl - Dave McEwan's Personal Python Library
Library is split into several modules:
- base - Useful in almost every project.
- color - Color (colour in English) related stuff.
- fx - Fixed point arithmetic using NumPy data types.
- math - Useful for mathematical code.
- nd - ND-array operations.
- prng - Pseudo-Random Number Generators. Currently just xoroshiro128+.
- stats - Statistics. Currently just for binary classifiers.
- test - Helpers for unit testing.
- toml - Save/load TOML files with optional compression.
- vcd - Value Change Dump (from Verilog) reader and writer.
- yaml - Extended YAML parser, useful for implementing DSLs on top of YAML.
Some useful scripts are provided in dmppl/scripts
which show how to use some
parts of the library modules.
- beamer-times - Report the time breakdown for beamer presentations by reading annotations in the LaTeX.
- parvec - Generate pseudorandom parameter vectors for design space exploration with repeatable results.
- vcd-utils - Convert VCD (Verilog IEEE1364) files to/from YAML and CSV, extract information, or cleanup dodgy VCDs using the forgiving reader with strict writer.
- svg2png - Simple wrapper around inkscape to export SVGs to PNGs.
Some experiments are given in dmppl/experiments
which are likely not useful
to most people.
- relest - (Relationship Estimation) Model SoC signal relations. Part of my PhD project presented at LOD2019.
- eva - (EVent Analysis) Measure and visualize correlations between measurements. Part of my PhD project.
Uses semantic versioning
Supports multiple versions of Python (2.7, 3.6, 3.7, 3.8).
- At some point I'll drop support for 2.7 and <3.7, probably when distros stop including them which isn't likely soon.
- Dropping support for <3.6 allows use of type annotations.
- Dropping support for <3.8 allows use of newer language features such as the walrus operator, and getting rid of version-specific hacks like `openCsvKwargs'. Don't necessarily need to wait for distros to support 3.8+, only wait for 3.6+ since altinstall+venv seems to be the recommended way forward. low priority
- Keeping support for old versions allows compatibility with other programs which have built-in Python shells, TODO: Collate version dependencies for various programs and decide what I want to support: Inkscape, Blender, nextpnr, yosys, ...
- pip packages are not specified with versions as it is assumed (naively) that the latest releases won't break anything.
See the Makefile
to wrap up common actions and provide examples of how to run
things.
make venv
to create a virtual environment for each supported version.make unittest
to perform all unit tests.make unittest-coverage
to perform all unit tests collecting code coverage and produce HTML reports.make dist
to build a setuptools distribution.make clean
to remove all generated files.
TODO:
- Upload to PyPI.
- mypy
- Integrate relest-ffnn
- Implement vch, vchlite
- Expand documentation here
- Sphinx/readthedocs
- Change convention to snake case for idiomatic Python and rust?
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dmppl-0.2.0.tar.gz
(88.2 kB
view hashes)
Built Distribution
dmppl-0.2.0-py3-none-any.whl
(97.1 kB
view hashes)