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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file dmppl-0.2.0.tar.gz.

File metadata

  • Download URL: dmppl-0.2.0.tar.gz
  • Upload date:
  • Size: 88.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.3

File hashes

Hashes for dmppl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1584e7fc9e4343f3429c880808494932c5ddb830eaeab8f2fc6a1042a9e375bf
MD5 1f22f73346f41e2a05a0f2390de4bb3a
BLAKE2b-256 df14a7ad17885cadaad5493b02d7f37195e7135704f827bbbf0efe24d20fb61d

See more details on using hashes here.

File details

Details for the file dmppl-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dmppl-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 97.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.3

File hashes

Hashes for dmppl-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d69161cb8107d140f8a3e4c66219ddba6f56cba86cd94b40c81dd6a43f7125dd
MD5 aa03b77b8fd3c235834442e187272188
BLAKE2b-256 4203137e1051b6f085114a06e515c051aa90ada2cfe89713208ffc0d557c29b2

See more details on using hashes here.

Supported by

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