Skip to main content

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:

  1. Upload to PyPI.
  2. mypy
  3. Integrate relest-ffnn
  4. Implement vch, vchlite
  5. Expand documentation here
  6. Sphinx/readthedocs
  7. Change convention to snake case for idiomatic Python and rust?

Project details


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)

Uploaded Source

Built Distribution

dmppl-0.2.0-py3-none-any.whl (97.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page